Moe*_*ald 67 msbuild visual-studio
我正在尝试将我们的构建服务器(jenkins)从Visual Studio 2015升级到2017年.我们正在通过MS-Build构建.我已按照此答案中的说明下载并安装了MS-Buld工具.如果我编译我的项目,我会收到一个Microsoft.WebApplication.targets
未找到的错误.
详细错误:
error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"
Run Code Online (Sandbox Code Playgroud)
我在MS-Build目录中执行了一个find:
PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11.01.2012 00:23 19654 Microsoft.WebApplication.targets
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 22.07.2013 01:25 19995 Microsoft.WebApplication.targets
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 06.07.2015 21:55 20118 Microsoft.WebApplication.targets
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 22.07.2013 01:25 19995 Microsoft.WebApplication.targets
Run Code Online (Sandbox Code Playgroud)
可以看出,旧编译器版本存在该文件,但对于v15.0,它缺失.
我还在构建服务器上安装了Visual Studio 2017.如果我使用Visual Studio 2017进行编译,该项目将成功构建.
任何提示如何解决这个问题?一种可能的解决方案是生成从C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications
点到旧v14.0文件(位于下面C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications
)的符号链接.
谢谢
Mar*_*ich 96
看起来你错过了Microsoft.VisualStudio.Workload.WebBuildTools
工作量.
你可以使用它安装它
vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools
Run Code Online (Sandbox Code Playgroud)
Sar*_*ger 75
上面接受的答案在技术上是正确的,只是不完整,有点令人困惑,至少对我来说,需要一个额外的步骤来使Visual Build Professional工作.
vs_buildtools.exe在技术上不存在.我不得不创建一个问题,询问该文件的位置.vs_buildtools.exe是vs_buildtools _*******.exe并且是实际的安装程序并不明显.另外,上面提到的"-add***"只是一种简写.可以转到GUI并检查两个工作流任务.这也是一样的.我收到了vs_buildtools文件,但不需要它.
VSB Pro仍然没有构建我的项目.我上面抛出了同样的错误.秘密酱只是将WebApplications
文件夹复制C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0
到C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0
.然后我重建了这个项目,一切都很好.我将WebApplication.targets文件放在预期的位置.
为什么微软不能做到这一点超出我的想法.另外,为什么单独安装.VS17安装了大量的东西.像往常一样暗示构建工具.随你.
我发布这个答案,希望它能帮助别人.我陷入了困境,因为我的项目没有建成而失去了相当多的时间.我希望这个答案可以澄清一些事情.
Tob*_*ias 17
从Visual Studio 2015升级到2017后,我遇到了类似的问题.当我尝试加载Web应用程序项目时,它向我抛出了错误消息:
未找到导入的项目"C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets".此外,尝试在$(VSToolsPath) - "C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v15.0"的后备搜索路径中找到"WebApplications\Microsoft.WebApplication.targets".这些搜索路径在"C:\ Users\xxx\AppData\Local\Microsoft\VisualStudio\15.0_558e146f\devenv.exe.config"中定义.确认声明中的路径是正确的,并且该文件存在于其中一个搜索路径的磁盘上.
在我的例子中,.csproj文件包含以下行:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
更换后v14.0
通过v$(VisualStudioVersion)
的VSToolPath
标签,该项目可能会被加载.
我还更换了v14.0
通过v10.0
在VisualStudioVersion
标签,如在上述链路示出了解决方案.但对我来说,它的工作原理是14.0.
以下是这些行最终应该如何看待:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
如果.csproj中根本没有这些行,则必须在此行之前手动添加它们:
<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />
Run Code Online (Sandbox Code Playgroud)
在我的情况下(略有不同的错误消息,但相同的问题)这是这一行:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Run Code Online (Sandbox Code Playgroud)
似乎自2011年以来使用Visual Studio版本创建的项目包含具有VSToolsPath
重新定义的行,而旧文件则没有.升级到较新的VS版本时,Visual Studio从未自动添加它们,这就是为什么如果它们不存在则应添加它们的原因.
此信息的来源:https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (点击显示更多评论以查看完整的讨论主题 - 遗憾的是我无法直接链接到此"更多"部分中的评论.)
ala*_*ree 10
WebBuildTools
使用chocolaty可以很容易地安装2017年构建工具,其中包含选项.一旦巧克力安装类型在管理员命令提示以下内容:
choco install visualstudio2017buildtools -y
Run Code Online (Sandbox Code Playgroud)
WebApplications
从中复制文件夹
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0
至
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0
或者在构建脚本中,在编译之前添加以下行
Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force
请务必使用提升的权限运行它
对于 VS 2019,我通过复制解决了这个问题:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0
到
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio
归档时间: |
|
查看次数: |
54038 次 |
最近记录: |