在构建服务器上找不到Microsoft.WebApplication.targets.你的解决方案是什么?

sta*_*ker 397 msbuild .net-4.0 build-server targets dbproj

尝试在构建服务器上构建我的项目给出了以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

几个月前,我在Build Server上安装了Visual Studio 2010,解决了这个问题.但是现在我从头开始设置一个新的服务器,我想知道是否有更好的解决方案来解决这个问题.

Chr*_*s S 204

要回答问题的标题(但不是关于你得到的输出的问题):

将以下文件夹从您的开发计算机复制到您的构建服务器,如果它只是Web应用程序,则会修复此问题

C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\WebApplications

根据构建中断的方式删除x86.如果您有其他项目类型,则可能需要复制整个msbuild文件夹.

  • 在将v10.0替换为v11.0之后,这适用于具有VS2012项目的m2 (11认同)
  • 为VS2017工作.只需将C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\vXX.0\WebApplications复制到C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v15.0\WebApplications (7认同)
  • 我们只是安装MSBuild工具而不是这个?http://www.microsoft.com/en-us/download/confirmation.aspx?id=40760 (2认同)

Say*_*imi 95

如果未安装VS,则不支持构建和发布WAP.话虽如此,如果你真的不想安装VS那么你需要复制下的所有文件%ProgramFiles32%\MSBuild\Microsoft\.

您还需要安装Web Deploy Tool.我想就是这样.

  • Sayed - 从dansomething看下面的答案 - 你的答案是否正确?即使安装VS 2010 Shell Integrated软件包,.NET SDK也无法正确安装Web应用程序项目支持? (4认同)

And*_*y K 75

UPD:从VS2017开始,Build Tools中的工作负载完全消除了这个问题.请参阅@SOReader答案.

如果您不想在构建服务器上修改任何内容,并且仍希望项目能够直接在源代码管理之外构建,那么将所需的二进制文件置于源代码管理之下可能是个好主意.您需要修改项目文件中的imports部分,如下所示:

<Import Project="$(SolutionDir)\BuildTargets\WebApplications\Microsoft.WebApplication.targets" />
<Import Condition="false" Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
Run Code Online (Sandbox Code Playgroud)

第一行是相对于解决方案目录的新位置的实际导入.第二个是Condition="false"原始行的关闭版本(),允许Visual Studio仍将您的项目视为有效的Web应用程序项目(这是VS 2010 SP1自身的技巧).

不要忘记复制源代码管理下的C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplicationsto BuildTargets文件夹.


小智 68

您还可以使用NuGet包MSBuild.Microsoft.VisualStudio.Web.targets,在Visual Studio项目中引用它们,然后按照Andriy K的建议更改您的引用.

  • 它不是官方发布的微软nuget包.我知道,因为我创造了它. (36认同)
  • 这是不可能的,因为我必须首先打开解决方案,但由于错误,我不能. (2认同)

SOR*_*der 66

现在,在2017年,您可以使用MSBuildTools安装WebApplication redists.只需转到此页面即可下载MSBuild 2017工具,安装时单击Web development build tools以安装这些目标: 在此输入图像描述

这将导致C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications默认情况下安装缺少的库

  • 构建服务器兼容(阅读:命令行)的方法是`choco install visualstudio2017-workload-webbuildtools`。 (3认同)
  • 另请注意[“Web 开发构建工具”包](https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2017# web-development-build-tools)、`Microsoft.VisualStudio.Workload.WebBuildTools`,可以通过命令行调用`vs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools` 进行安装。添加`--passive` 不需要用户干预。 (3认同)
  • 令我非常惊讶的是,我的五岁时将libs包装到源代码控制系统中,即使在今天它的修改仍然得到了投票,而这是开箱即用的答案. (2认同)
  • @AndriyK你的解决方案与我的建议有点不同,我理解为什么有人可能更喜欢你的解决方案...除非它只是懒惰; D (2认同)
  • 为了使这更通用,对于 Visual Studio 的未来版本,您可以从 https://visualstudio.microsoft.com/downloads/ 下载最新的构建工具向下滚动页面并在底部附近展开“Visual Studio 工具”部分,然后下载“Visual Studio 构建工具”。目前这些是针对 VS 2017 的,但我认为未来的版本也是如此。顺便说一句,如果您需要为 CI 工具(例如 Jenkins)提供 msbuild.exe 的路径,对于 VS 2017,它将安装在 C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0 \Bin\msbuild.exe 。 (2认同)

Mat*_*ton 54

基于这篇文章,您只需下载Microsoft Visual Studio 2010 Shell(集成)可再发行组件包并安装目标.

这样就无需在构建服务器上安装Visual Studio.

我现在刚试过这个,并且可以验证它是否有效:

之前:

错误MSB4019:找不到导入的项目"C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets".确认声明中的路径是否正确,以及该文件是否存在于磁盘上.

安装后:

[构建正确]

这显然比在构建服务器上安装Visual Studio要好得多.

  • 这是IMO最简单,最简单的解决方案.我正在使用VS 2013,并且我发现Visual Studio 2013 Shell(隔离)可再发行组件是有用的(由于依赖于Isolated one而无法安装集成版). (7认同)
  • 不幸的是,使用VS v14.0,安装软件包的方法是通过nuget,但由于我的问题是构建服务器没有安装VS(只有MSBuild),所以安装软件包几乎是不可能的.我花了几个小时摸索PowerShell和Nuget的各种半支持安装,然后简单地将文件夹从我的PC复制到服务器. (3认同)
  • @BountyMan - 构建服务器是承担或控制软件的持续集成(CI)构建的服务器.示例:Jenkins,TeamCity,CruiseControl等 (2认同)

dan*_*ing 38

最新的Windows SDK,因为除了上面提到的,"微软的Visual Studio 2010壳(集成)再发行组件包"的Microsoft.WebApplication.targets和"Microsoft Visual Studio团队系统2008年数据库版GDR R2"为Microsoft.Data.Schema .SqlTask​​s.targets应该可以减轻安装Visual Studio 2010的需要.但是,安装VS 2010实际上可能实际上不那么整体下载并且最终减少工作量.

  • 这是一个非常重要的答案,因为如果您是为客户端设置构建服务器的独立开发人员,则不希望客户端必须维护Visual Studio许可证才能构建其软件. (21认同)

Ale*_* R. 20

在构建/ CI服务器上构建时,Microsoft.WebApplication.targets通过指定完全关闭导入/p:VSToolsPath=''.这实际上会使以下行的条件为假:

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


这是在TeamCity中完成的:

在此输入图像描述


Dam*_*mon 17

通过NuGet添加依赖关系并设置构建参数

目标:构建代理不需要更改/安装

在这里采用了LloydNuGet方法的混合方法,该方法基于Andrik提交的二进制依赖解决方案.

我之所以希望能够添加新的构建代理,而不必使用这样的项目预先配置它们.

  1. 在使用Visual Studio的计算机上,打开解决方案; 忽略Web项目失败.
  2. 在NuGet包管理器中,添加MSBuild.Microsoft.VisualStudio.Web.targets,如Lloyd所述.
  3. 这将解析二进制文件 [solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
    1. 您可以将这些复制到引用文件夹和提交,
    2. 或者只是在他们所在的位置使用它们.我选择了这个,但是我将不得不稍后处理路径中的版本号.

在版本7中,我执行了以下操作.这可能没有必要,现在绝对不需要根据评论.请参阅下面的评论.

  1. 接下来,在TeamCity构建配置中,添加构建参数,env.VSToolsPath并将其设置为VSToolsPath文件夹; 我用了..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath

  • 如果您只是将项目文件中的 &lt;Import&gt; 元素替换为以下元素,则无需执行第 4 步:`&lt;Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0。 1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" /&gt;` (8认同)

Kor*_*yem 14

如果将Visual Studio 2012迁移到2013,则使用edior打开*.csproj项目文件.
并检查'Project'标签的ToolsVersion元素.

将其值从4.0更改为12.0

或者如果使用msbuild构建,则只需指定VisualStudioVersion属性

msbuild /p:VisualStudioVersion=12.0

解决方案来源

  • 将/p:VisualStudioVersion=12.0添加到MSBuild TFS 2013构建定义中的参数(对于在Visual Studio 2013中创建的解决方案)对我有用.出于某种原因,它会在没有任何参数的v11.0文件夹中查找文件. (4认同)
  • 这个解决方案对我有用,我使用了那个命令:`msbuild/p:Platform = x86/p:VisualStudioVersion = 12.0` (3认同)

Huy*_*ong 9

似乎新版本的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" />  
Run Code Online (Sandbox Code Playgroud)

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" />  
Run Code Online (Sandbox Code Playgroud)

参考链接:https: //alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/


Sim*_*ver 8

这就是你所需要的.只有103MB.不要安装一切

在此输入图像描述


sta*_*ker 5

我在MS连接上发现了这个:

是的,您需要在构建计算机上安装Visual Studio 2010以构建数据库项目.这样做不需要Visual Studio的其他许可证.

所以,这是我现在唯一的选择.

  • 这个链接似乎被打破了. (2认同)

归档时间:

查看次数:

256054 次

最近记录:

5 年,10 月 前