Visual Studio 2010似乎坚持在Web应用程序项目中进行此导入
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
这个导入给了我们什么,是否真的需要?
如果您使用文本编辑器删除此导入,Visual Studio将重新添加它。
我问的原因是项目是在构建服务器上编译的,目标也不存在,因为没有安装visual studio。
答案 0 :(得分:11)
正如对Raj Kaimal回答的评论中所建议的那样,为了使其正常工作,您可以将文件夹复制到构建机器上的相同位置。
如果需要,您也可以将该文件夹放在机器的其他位置,甚至与项目相关。您只需要向csproj添加一些内容以重定向MSBuildExtensionsPath ..
例如,我的csproj中有以下内容(适用于VS2010和VS2012):
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
<PropertyGroup>
<MSBuildExtensionsPath32>..\lib\MSBuild.MSVS\</MSBuildExtensionsPath32>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets"/>
然后,在我的lib文件夹(这是包含csproj的文件夹的兄弟)中,我复制了以下目录:
答案 1 :(得分:4)
包含MSBuild的条目 C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications
使用VS 2010中的发布选项创建可在服务器上部署的zip包(MS Deploy)
请阅读:http://vishaljoshi.blogspot.com/2009/03/how-does-web-deployment-with-vs-10.html
您使用的构建服务器是什么?
答案 2 :(得分:3)
我们的CI构建服务器也存在一些网站。它没有安装Visual Studio版本,因此MSBuildExtensions的链接在升级到vs2010 / .net4.0时打破了我们的构建。
如果它不是开发机器,那么必须在构建机器上安装VS2010似乎太过分了......我可以在构建服务器上安装MSBuild扩展包(http://msbuildextensionpack.codeplex.com/)并使其正常工作好吗?我目前无法验证这是否有效,但从本文之前我能够完成的内容来看,它似乎比安装VS2010更好。
-Daniel
答案 3 :(得分:0)
如果不从构建服务器进行部署,则可以关闭构建服务器上的Microsoft.WebApplication.targets。请在此处查看我的回答:https://stackoverflow.com/a/35781566/4955344