Visual Studio Method Plugin:开发服务端 Method
Aras Innovator Method Plugin 让开发者在 Visual Studio 中创建和修改 服务端 Method。 它可以从 Innovator 实例或本地 AML 包打开代码,也可以把代码保存回相同目标,并提供测试模板等辅助能力。
先看产品边界
这个插件面向 server-side methods。它不是通用的客户端 JavaScript/CUI/Form 开发器, 也不是 TAF 的 AML Integration Test Plugin。两者是不同的 Marketplace 扩展。
1. 适用版本与支持声明
截至 2026-08-13,Visual Studio Marketplace 页面明确列出:
- Aras Innovator 12 SP18。
- Aras Innovator Release 20~37。
- 插件由 Aras 以 as is 方式提供。
- Aras 不为该插件提供支持或相关服务。
Release 38 和 39 不在页面列出的范围内。即使扩展能够安装或连接,也不能据此写成“官方兼容 R39”。
Visual Studio 版本也要核对
不要凭经验写“支持 VS 2019/2022”。安装前应查看 Marketplace 当前的 Installation Targets、扩展版本说明, 并在与目标 Innovator Release 匹配的测试机做烟雾验证。
2. 插件能做什么
Marketplace 当前说明包含以下能力:
- 创建和修改 Aras Innovator 服务端 Method。
- 从 Innovator 实例打开 Method。
- 将 Method 保存回 Innovator 实例。
- 从本地 AML package 打开或保存 Method。
- 生成用于单元测试 Method 的模板代码。
- 保存 Method 前,在 Innovator 中创建新的 package。
这些能力并不意味着插件会自动完成:
- Client JavaScript 的浏览器兼容测试。
- Method 与 ItemType Server Event/Action 的所有关系配置。
- Package Definition 的完整依赖分析。
- 生产部署审批和回滚。
- TAF 许可、环境与测试运行器配置。
- 目标 Release 的 .NET 兼容迁移。
3. 版本决定服务端代码目标
插件解决编辑体验,不会替你消除运行时差异。
| Innovator 世代 | 服务器运行时边界 | 开发含义 |
|---|---|---|
| R15 起 | 服务器组件迁移到 .NET Core 3.1 | 旧 Framework API 可能不可用 |
| R31 代 | .NET 6 | 自定义 DLL 应按目标 Release 文档编译 |
| R34/R35 | .NET 8.0.1 | 依赖库需与服务器运行时兼容 |
| R39 | .NET 10 | 插件兼容页尚未列 R39,不能据此部署 |
服务端 Method 引用自定义 DLL 时,应使用目标 Innovator 版本的 IOM,并按 Programmer's Guide 配置 DLL 与 method-config.xml。 不要只因为 Visual Studio 编译通过,就认为服务器一定可以加载程序集。
4. 安装前检查
4.1 建立兼容矩阵
记录以下信息并随仓库保存:
Innovator Release : 35
Method Plugin : <Marketplace extension version>
Visual Studio : <validated edition/version>
Server runtime : .NET 8.0.1
IOM : <target-server compatible version>
Validation date : 2026-08-13如果 Innovator 超出 Marketplace 范围,停止并选择受支持工作流,例如在浏览器中维护 Method、 使用官方包工具迁移,或向 Aras 确认替代方案。
4.2 使用隔离账号和环境
- 先连接 LDE 或专用开发实例。
- 账号只授予 Method 与 Package 所需权限。
- URL、数据库名和身份验证方式以目标环境为准。
- 不把密码或 token 写进源码、项目文件或 Git。
- 正式保存前确认 Method 是否已被其他开发者锁定或修改。
5. 推荐工作流
5.1 打开前
- 记录服务器中 Method 的 ID、名称、
method_type和最后修改时间。 - 确认它属于正确的 Package Definition。
- 导出或保存当前 AML,作为可比较基线。
- 再从插件打开 Method。
5.2 编辑时
- Method body 只写平台要求的主体代码,不随意添加完整类包装。
- 使用目标 Release 支持的 C# 与 .NET API。
- 把权限检查和输入校验保留在服务器端。
- 外部调用设计超时、重试和幂等。
- 不把连接字符串、密码或环境 URL 硬编码在 Method 中。
5.3 保存后
- 从 Innovator 重新打开 Method,确认代码完整。
- 运行一个明确输入的烟雾测试。
- 导出 AML 包并审查差异。
- 确认 Server Event、Action、Permission 等关系没有意外变化。
- 再提交 Git 和发起评审。
6. 可复现实验:最小服务端 Method
仅在隔离开发环境新建一个测试 Method,例如 z_test_vs_plugin_smoke。
Innovator inn = this.getInnovator();
return inn.newResult("VS_PLUGIN_SMOKE");验证步骤:
- 在 Innovator 中创建 C# 服务端 Method,并纳入测试 Package。
- 使用插件从该实例打开 Method。
- 只修改返回文本为
VS_PLUGIN_SMOKE_2。 - 保存回开发实例。
- 通过受支持的 Method 执行入口运行它。
- 断言
<Result>内容为VS_PLUGIN_SMOKE_2。 - 保存到本地 AML package。
- 用文本比较确认只有目标 Method 发生变化。
- 用 Package Import Tool 导入另一份测试数据库并再次运行。
实验记录至少包括插件版本、VS 版本、Innovator Release、Method ID、Package 名和导入日志。
调试进程不能写死
现代 Innovator 使用 ASP.NET Core/Kestrel,IIS 在 MSI 部署中可作为反向代理。 不要把“始终附加 w3wp.exe”写成跨版本步骤;应按目标 Release 部署形态识别实际承载进程。
7. 测试模板不等于 TAF
Method Plugin 可以生成用于单元测试 Method 的模板代码;这项能力不等于安装了 TAF。
| 需求 | 应使用的工具 |
|---|---|
| 编辑服务端 Method | Aras Innovator Method Plugin |
| 创建 Aras TAF AML 集成测试 | Aras Innovator AML Integration Test Plugin + TAF |
| 编写普通自建单元测试 | 团队选定的 .NET 测试框架 |
如果项目使用 TAF,还必须核对 TAF 自身的 Innovator/VS/.NET/许可矩阵。
8. 常见错误
声称插件支持客户端 JS
Marketplace 定位是服务端 Method。客户端脚本需要浏览器、Form/CUI 上下文和目标版本 API 的独立验证。
发明固定项目目录
不要把 ServerMethods/.../method.metadata.xml 等结构写成官方保证。 以实际插件版本生成的项目和 AML package 为准。
把 as-is 写成“官方工业级支持”
发布者是 Aras,但页面同时明确“不提供支持或相关服务”。两句话必须一起写。
默认兼容 R39
当前页面只列到 R37。版本范围之外必须重新评估工具链。
把保存到服务器当成发布完成
开发实例保存只是开发步骤。正式迁移仍需 Package、评审、导入日志、测试和回滚方案。
9. 官方依据
- Aras Innovator Method Plugin — Visual Studio Marketplace
- Aras Innovator AML Integration Test Plugin — Visual Studio Marketplace
- R34 Programmer's Guide
- Migration to .NET 10
文档最后核验:2026-08-13。
