Mat*_*att 11 msbuild web-config visual-studio
我在Visual Studio 2013中有一个WebAPI项目.如果我在Visual Studio中构建项目,在bin /目录中我会看到一个名为MyProject.dll.config的文件,它代表构建时的web.config文件.
但是,如果我从命令行执行MSBuild,则会丢失.config文件,但所有其他文件都存在.
> msbuild.exe /t:build /v:q /p:Configuration=Debug /nologo \
D:\Workspace\MyProject\src\MyProject.sln
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?为什么不复制.config?
对于部署 web 项目或 web api 项目,没有 $(TargetName)$(TargetExt).config 的事实并不是什么大问题。在运行时,IIS 将使用 Web.config 来确定程序集所需的一切。
但!
如果您使用 Web 应用程序或 Web Api 项目作为测试的基础*,那么您可能会遇到一些障碍。特别是,当涉及到程序集绑定重定向时(就像在撰写本文时的当前版本是 7.0.0 时仍然依赖 Newtonsoft.Json 4.5.0 的 MVC 内部的情况一样)。一位同事在他的测试项目所依赖的另一个组件上遇到了类似的问题。
现在,当您通过 Visual Studio(例如,通过 Resharper)运行测试时,它们都可以正常工作。但是,当您的测试到达 CI 服务器并由 nunit-console 运行时,您将看到程序集加载错误。不漂亮。这是因为所描述的行为,其中 VS 偷偷地将 .config 文件复制到正确的输出,而 msbuild 则没有。但是,您可以使用构建后构建事件解决此问题:
复制 $(ProjectDir)Web.Config $(TargetDir)$(TargetName)$(TargetExt).config
这解决了我的重定向问题。我希望它可以帮助别人。
当我创建 WebAPI 项目时,web.config默认Copy to Output Directory设置为。Do Not Copy您是否在解决方案资源管理器中选择了 Web.config 并将其设置为复制操作?
我无法解释为什么它似乎使用 IDE 构建为您复制,而不是您显示的 msbuild cmd,这不是我在 2013 年的新 WebAPI 项目中看到的行为。
| 归档时间: |
|
| 查看次数: |
4020 次 |
| 最近记录: |