WebActivatorEx 全局属性破坏 CI 构建
WebActivatorEx global attribute breaking CI build
我正在尝试使用 Visual Studio Team Services CI 构建,但我 运行 遇到 Ninject class 正在调用 WebActivator。
此代码在我的 NinjectWebCommon.cs 中执行:
这 builds/runs 在本地使用 Visual Studio 很好。但是,当我将我的项目推送到 VSTS 并尝试 运行 构建时,我收到此警告(这不可避免地导致预期的编译错误):
如果我注释掉上面显示的全局属性,CI构建成功。
我很难准确指出问题所在。错误消息很简单,但是 Visual Studio 中的构建和允许它在一个地方而不是另一个地方工作的 VSTS 之间有什么区别?我确定我可以通过在我的 Global.asax 中手动放置调用来防止这个问题,但这不是我想要的方向 -- Ninject 使用 WebActivator 调用是有原因的。
谢谢!
如果不检查您的实际项目和 CI 过程,将很难给出明确的答案。
问题是您的 CI 服务器上缺少 WebActivatorEx 程序集。假设您的 CI 服务器从源代码管理中提取了解决方案的副本,您可以检查以下内容:
- 确保您的 CI 服务器在构建之前 运行 对解决方案进行了 nuget 恢复。
- 在您的 Web 项目中,仔细检查它的引用并确保从 "packages\WebActivatorEx" 路径而不是“\bin\”路径引用 WebActivatorEx。
- 仔细检查您的 Web 项目中的 packages.config 并确保列出了 WebActivatorEx。这就是 nuget 知道为该项目恢复该包的方式。
如果您在本地清理您的 bin 文件夹并删除您的 packages 文件夹,您可能能够在您的机器上重现该问题。
我正在尝试使用 Visual Studio Team Services CI 构建,但我 运行 遇到 Ninject class 正在调用 WebActivator。
此代码在我的 NinjectWebCommon.cs 中执行:
这 builds/runs 在本地使用 Visual Studio 很好。但是,当我将我的项目推送到 VSTS 并尝试 运行 构建时,我收到此警告(这不可避免地导致预期的编译错误):
如果我注释掉上面显示的全局属性,CI构建成功。
我很难准确指出问题所在。错误消息很简单,但是 Visual Studio 中的构建和允许它在一个地方而不是另一个地方工作的 VSTS 之间有什么区别?我确定我可以通过在我的 Global.asax 中手动放置调用来防止这个问题,但这不是我想要的方向 -- Ninject 使用 WebActivator 调用是有原因的。
谢谢!
如果不检查您的实际项目和 CI 过程,将很难给出明确的答案。
问题是您的 CI 服务器上缺少 WebActivatorEx 程序集。假设您的 CI 服务器从源代码管理中提取了解决方案的副本,您可以检查以下内容:
- 确保您的 CI 服务器在构建之前 运行 对解决方案进行了 nuget 恢复。
- 在您的 Web 项目中,仔细检查它的引用并确保从 "packages\WebActivatorEx" 路径而不是“\bin\”路径引用 WebActivatorEx。
- 仔细检查您的 Web 项目中的 packages.config 并确保列出了 WebActivatorEx。这就是 nuget 知道为该项目恢复该包的方式。
如果您在本地清理您的 bin 文件夹并删除您的 packages 文件夹,您可能能够在您的机器上重现该问题。