Visual Studio 缺少MS-Build 2017“Microsoft. Web应用程序.目标“

zy1mlcev  于 2022-12-04  发布在  其他
关注(0)|答案(9)|浏览(367)

我正在尝试将我们的构建服务器(jenkins)从Visual Studio 2015升级到2017。我们正在通过MS-Build进行构建。我已经下载并安装了MS-Buld工具,如answer中所述。如果我编译我的项目,我会收到一个错误,即找不到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"

我在MS-Build目录中执行了查找:

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

可以看到,旧编译器版本中存在该文件,但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下)的符号链接。
谢谢

suzh9iv8

suzh9iv81#

看起来您缺少“Web开发构建工具”的工作负载:Microsoft.VisualStudio.Workload.WebBuildTools.
您可以从here(VS2017)或here(VS2019)下载构建工具安装程序,然后运行

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

或者打开vs_buildtools.exe并在GUI中选择“Web开发构建工具”组件:

ergxz8rk

ergxz8rk2#

上面的公认答案在技术上是正确的,只是不完整,有点混乱,至少对我来说是这样,需要一个额外的步骤来让Visual Build Professional工作。

  1. vs_buildtools.exe在技术上并不存在。我不得不问一个问题,询问该文件在哪里。很明显,vs_buildtools.exe就是vs_buildtools_*****.exe,并且是实际的安装程序。此外,上面提到的“-add*”只是一个简写。用户可以转到GUI并检查两个工作流任务。这是同样的操作。最后我得到了vs_buildtools文件,尽管并不需要它。
  2. VSB Pro仍然没有构建我的项目。我遇到了上面同样的错误。酱料简单地将C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0中的WebApplications文件夹复制到C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0。然后我重建了项目,一切都很好。我将WebApplication.targets文件放在了预期的位置。
    为什么微软不能做到这一点是我无法理解的。还有,为什么单独安装。VS 17安装了大量的东西。构建工具是隐含的,像往常一样。无论如何。
    我贴出这个答案,希望它能帮助其他人。我掉进了陷阱,失去了相当多的时间与我的项目没有建设。我希望这个答案澄清了一些事情。
ttygqcqt

ttygqcqt3#

从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>

VSToolPath标记中将v14.0替换为v$(VisualStudioVersion)后,可以加载项目。

我还将VisualStudioVersion标签中的v14.0替换为v10.0,如上面链接中的解决方案所示。
下面是这些行的最终外观:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

如果您的.csproj中根本没有这些行,则必须在该行之前手动添加它们:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

在我的例子中(错误消息略有不同,但问题相同),它是这样一行:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

似乎使用Visual Studio 2011年以后的版本创建的项目包含带有VSToolsPath重定义的行,而较旧的文件则没有。Visual Studio在升级到较新的VS版本时从不自动添加它们,这就是为什么如果它们不存在,您应该添加它们。
信息来源:https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664(单击 * 显示更多评论 * 查看完整的讨论线索-遗憾的是,我无法直接链接到“更多”部分中的评论。)

rqdpfwrv

rqdpfwrv4#

使用chocolatey可以轻松安装2017构建工具,其中包含WebBuildTools选项。安装installed后,在管理命令提示符下输入以下命令:

choco install visualstudio2017buildtools -y

对于VS 2019,情况类似:

choco install visualstudio2019buildtools -y
dxpyg8gm

dxpyg8gm5#

对于VS 2019,我通过复制修复了此问题:
C:\程序文件(x86)\Microsoft Visual Studio \2019\企业版\微软内部版本\Microsoft\Visual Studio \v16.0

C:\程式档(x86)\MSBuild\Microsoft\Visual Studio

bqjvbblv

bqjvbblv6#

复制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
请确保使用提升的权限运行它

dsekswqp

dsekswqp7#

如何创建VS 2017 pro,asp.net MVC应用程序并使用Jenkins构建它?
在开发计算机和构建服务器中使用vs 2017 pro
检查VisualStudio是否设置为15

导入项目="$(MSBuildExtensionsPath 32)\Microsoft\Visual Studio\v15.0\Web应用程序\Microsoft. Web应用程序.目标”条件=“假”
设置msbuild工具

安装到Jenkins全局配置管理器中的C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe中

使用jenkins,执行Windows命令批处理:

还原金块:“C:\程序文件(x86)\Jenkins\工具\nuget\NuGet.exe”还原“C:\程序文件(x86)\Jenkins\工作区\应用程序构建\应用程序.sln”

使用jenkins执行Windows命令批处理:

MSBuild生成文件:theapp.sln
命令行参数:/nologo /t:还原/t:重新生成/p:配置=“调试”/p:VisualStudio版本=15.0

a8jjtwal

a8jjtwal8#

可能有多个问题导致此错误,但它通常是由于缺少文件(我的错误示例如下)。

Invalid project `C:\xxxxx\Web.Mvc.csproj`. The imported project "C:\Program Files\dotnet\sdk\5.0.403\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the expression in the Import declaration "C:\Program Files\dotnet\sdk\5.0.403\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets" is correct, and that the file exists on disk.

对于我自己,我正在使用dotnet命令通过powershell构建一个.NET 4.8解决方案,运行在VS 2019上。失败的项目在VS2010/15/17中创建。
因此,为了解决丢失的文件,我只是在它要查找的文件和它期望的位置之间创建了一个符号链接。

mklink /J "C:\Program Files\dotnet\sdk\5.0.403\Microsoft\VisualStudio" "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio"

这解决了这个问题,现在我可以通过编程方式构建解决方案(如果使用正确的文件路径创建符号链接,这也适用于其他示例)。

fzsnzjdm

fzsnzjdm9#

我只是使用Visual Studio安装程序更新了Visual Studio社区2017,问题就解决了。

相关问题