drs*_*222 81 .net asp.net visual-studio-2010 visual-studio-2008 visual-studio-2012
首先是一些背景.在2012年底,我们将vs2008解决方案迁移到了vs2010,但我们仍然以.NET 3.5为目标.(我只知道最新最好的!)
几周前,当人们开始收到这些错误时,我们对此设置没有任何问题:
"foo.csproj" (Rebuild target) (16:5) ->
C:\...\foo.csproj(142,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果你查看项目文件,它引用v10是有道理的,因为我们不使用Visual Studio 2012.
这个错误立刻打击了我们几个人,甚至在几个月没有改变的旧代码分支上.
我怀疑一些更新被推到我们的机器上,这让事情变得混乱,但我不知道该怎么做.
短期的解决方案是安装VS 2012而不是使用它,但我希望有一些比这更清洁的东西.
Nat*_*nSr 113
我遇到了与Visual Studio 2013相同的问题.事实证明,我从命令行使用旧版本的MSBuild - .NET Framework附带的版本.Microsoft现在将MSBuild作为Visual Studio本身的一部分发布,也作为单独的安装程序发布(http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of- visual-studio.aspx).
解决方案是使用位于的新版MSBuild.exe C:\Program Files (x86)\MSBuild\12.0\Bin.一旦我这样做,所有目标错误都消失了.
编辑1
正如评论中所提到的,MSBuild的每个新版本都带有一个新目录.对于Visual Studio 2015,请使用C:\Program Files (x86)\MSBuild\14.0\Bin.
编辑2
如评论中所述,对于Visual Studio 2017,请使用C:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\MSBuild\15.0\Bin\MSBuild.exe.
Dan*_*aan 50
如果您的构建服务器没有安装VS2012,则可以通过此方法解决此问题
a)将MSBuild.Microsoft.VisualStudio.Web.targets包安装到您的解决方案中,并且
b)替换.csproj文件中的这一行:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Run Code Online (Sandbox Code Playgroud)
这条线指向nuget包
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />
Run Code Online (Sandbox Code Playgroud)
编辑
作为@joedragons指出,在更新后的行应匹配的NuGet包版本,该版本如更换targets.11.0.2.1与targets.x.x.x.x当前版本.
小智 23
这个问题的简单解决方案:
转到以下路径:
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio
您将看到最新版本V10.0,v11.0,v12.0,具体取决于您的Visual Studio 2010,2012或2013安装.
WebApplications从最新版本目录中复制文件夹并粘贴到其他目录.
你的问题应该得到解决.
Tho*_*ham 10
我发现安装免费的Visual Studio 2012 Shell(隔离)会安装WebApplications v11 MSBuild文件.比完整安装的Visual Studio 2012更轻,没有许可问题.
哇.我们刚刚在构建机器上看到了同样的事情.我们使用VS2010并以.NET 4.0为目标.我们的项目文件显式导入这些目标的v10.0版本.由于没有对代码进行任何更改,昨天构建很好,今天它失败了对丢失的v11.0版本的投诉..NET Framework 4.5.1昨晚在此构建计算机上安装/更新为自动更新.我们将使用参数(或env.变量)强制v10.0,但这确实让我们感到惊讶......
更新:更奇怪的是,似乎今天的msbuild版本似乎正在使用sln文件的第一行来确定默认使用哪个VisualStudioVersion,而昨天的版本没有:
Format Version 12.00
Run Code Online (Sandbox Code Playgroud)
我们测试手动将其更改为11.00并且构建再次开始工作.
在我们的例子中,即使我们针对2010/4.0的目标并构建一切,一些开发人员已经为VS2012做好了准备(因为MS声称项目文件是兼容的),并且这个特定的解决方案最后保存(几个月前) VS2012.在今天之前,这并没有造成问题.
我遇到过同样的问题.通过上面列出的解决方案修复.导致该问题的原因是构建服务器上没有适当版本的Visual Studio工具(BuildTools).正如上面正确指出的那样,这可以通过安装BuildTools来解决,但在我的情况下不是选项.
这是另一种选择 - 使用Nuget
Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3
Run Code Online (Sandbox Code Playgroud)
确定启动项目并根据正在使用的Visual Studio版本安装web.targets.将修改以下文件,其中包括所需的更改
在packages.config中:
<package id="MSBuild.Microsoft.VisualStudio.Web.targets" version="14.0.0.3" targetFramework="net45" />
Run Code Online (Sandbox Code Playgroud)
在.csproj中:
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props" Condition="Exists('..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props')" />
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!!!祝好运,
干杯,
帕文
我最近遇到了同样的问题。我的结论是,VS 的每个版本(v10、v11、v12)都会更改构建变量的路径,例如MSBuildBinPath.
因此,指定 VS 的确切版本并不是一种黑客行为,因为您甚至可能没有安装适当版本的文件。因此,您最好指定一个参数并使用您计算机上存在的目标。
在极少数情况下,您可能需要安装特定版本的 VS 和 Web 部署包。就我而言,仅版本就足以解决问题。
| 归档时间: |
|
| 查看次数: |
65131 次 |
| 最近记录: |