试图在构建服务器上构建我的项目给我以下错误:
Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
几个月前,我通过在Build Server上安装Visual Studio 2010解决了这个问题。但是现在我从头开始安装一个新的服务器,我想知道是否有更好的解决方案来解决这个问题。
UPD:从VS2017开始,构建工具中的工作负载完全消除了这个问题。见@SOReader的答案。
如果您不希望在构建服务器上修改任何内容,并且仍然希望在源代码控制之外构建项目,那么将所需的二进制文件置于源代码控制之下可能是一个好主意。你需要修改项目文件中的imports部分,如下所示:
<Import Project="$(SolutionDir)\BuildTargets\WebApplications\Microsoft.WebApplication.targets" />
<Import Condition="false" Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
第一行是从相对于解决方案目录的新位置实际导入的。第二个是关闭的版本(Condition="false"),它允许Visual Studio仍然认为您的项目是一个有效的Web应用程序项目(这是VS 2010 SP1自己做的技巧)。
不要忘记将C:\Program Files (x86)\Microsoft\ VisualStudio\v10.0\WebApplications复制到源代码控制下的BuildTargets文件夹。
如果你正在使用MSBuild,就像在构建服务器的情况下一样,对我来说有用的是:
修改如下:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
to:
<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
我的Msbuild命令是:*“C:\Program Files (x86)\ Msbuild \14.0\Bin\ Msbuild .exe”方案。sln /p:Configuration=Debug /p:Platform="任意CPU"* .
希望这能帮助到一些人。
新版msbuild似乎没有附带Microsoft.WebApplication.targets。要修复你需要更新你的csproj文件,如下所示:
1)编辑web应用程序csproj(右键单击)。在csproj的底部找到关于构建工具的部分。应该是这样的。
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
2)你需要在VisualStudioVersion标签下面添加一个VSToolsPath行,这样看起来就像这样
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<!--Add the below line to fix the project loading in VS 2017 -->
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<!--End -->
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
参考链接:
https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/
通过NuGet添加依赖项并设置一个构建参数
目标:对构建代理没有必要的更改/安装
我在这里采用了Lloyd的NuGet方法的混合方法,该方法基于Andrik的提交二进制依赖解决方案。
原因是我希望能够添加新的构建代理,而不需要使用诸如此类的项预先配置它们。
在机器上用Visual Studio打开解决方案;忽略web项目失败。
在NuGet包管理器中,添加MSBuild.Microsoft.VisualStudio.Web。目标,正如Lloyd提到的。
这将把二进制文件解析为[solution]\packages\ msbuild . microsoft . visualstudio . web .target .nn.n.n.n\tools\VSToolsPath\
你可以把这些复制到引用文件夹并提交,
或者就在它们所在的地方使用它们。我选择了这个,但是稍后我将不得不处理路径中的版本号。
在版本7中,我执行了以下操作。这可能是不必要的,根据评论,现在肯定不需要了。请看下面的评论。
接下来,在TeamCity构建配置中,为env添加一个构建参数。VSToolsPath并将其设置为VSToolsPath文件夹;我使用的是..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath