MS-Build 2017"Microsoft.WebApplication.targets"缺失

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)

  • 如果您已经下载了"Visual Studio 2017构建工具"安装程序(https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15),那么您可以启动该安装程序,点击修改并勾选"Web开发构建任务"工作负载模块复选框.然后单击"修改"按钮,让安装程序完成. (24认同)
  • 我从提供的链接安装了"用于Visual Studio 2017的构建工具"和"Web开发构建任务"但是它仍然没有创建`C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v15.0\WebApplications`文件夹..i也没看到`vs_buildtools.exe`..i搜索了整个`c:\` (4认同)
  • 我如何运行此命令,它的'vs_buildtools.exe'在开发人员工具2017中未被识别为内部或外部命令错误 (3认同)

Sar*_*ger 75

上面接受的答案在技术上是正确的,只是不完整,有点令人困惑,至少对我来说,需要一个额外的步骤来使Visual Build Professional工作.

  1. vs_buildtools.exe在技术上不存在.我不得不创建一个问题,询问该文件的位置.vs_buildtools.exe是vs_buildtools _*******.exe并且是实际的安装程序并不明显.另外,上面提到的"-add***"只是一种简写.可以转到GUI并检查两个工作流任务.这也是一样的.我收到了vs_buildtools文件,但不需要它.

  2. VSB Pro仍然没有构建我的项目.我上面抛出了同样的错误.秘密酱只是将WebApplications文件夹复制C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0.然后我重建了这个项目,一切都很好.我将WebApplication.targets文件放在预期的位置.

为什么微软不能做到这一点超出我的想法.另外,为什么单独安装.VS17安装了大量的东西.像往常一样暗示构建工具.随你.

我发布这个答案,希望它能帮助别人.我陷入了困境,因为我的项目没有建成而失去了相当多的时间.我希望这个答案可以澄清一些事情.

  • 确认"Visual Studio 2017的构建工具"实际上将目标复制到C:\ Program Files(x86)\ Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0,而msbuild实际上尝试在C处找到目标:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v15.0,所以我必须复制文件夹.显然第一个由IDE使用,第二个由独立的msbuild使用.奇怪. (4认同)
  • 复制文件夹为我做了伎俩.谢谢 (2认同)
  • 可以,但是问题是Visual Studio安装程序似乎无法可靠地将WebApplications文件夹放在所需的两个位置。正如Sarah所建议的那样,手动复制是我设法在开发机器上可靠地进行构建的唯一方法。 (2认同)

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.0VisualStudioVersion标签,如在上述链路示出了解决方案.但对我来说,它的工作原理是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)

  • 您不必安装特定版本,可以使用Chocolatey以这种方式安装它并合并接受的答案:`cinst visualstudio2017buildtools -params'--add Microsoft.VisualStudio.Workload.WebBuildTools'-y; cinst microsoft-build-tools -y` (2认同)

ade*_*l41 7

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

请务必使用提升的权限运行它


mar*_*tch 5

对于 VS 2019,我通过复制解决了这个问题:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio


归档时间:

查看次数:

54038 次

最近记录:

6 年 前