Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 Visual Studio 2012解决方案的TeamCity中的MSBuild_Visual Studio 2010_Visual Studio_Visual Studio 2012_Msbuild_Teamcity - Fatal编程技术网

Visual studio 2010 Visual Studio 2012解决方案的TeamCity中的MSBuild

Visual studio 2010 Visual Studio 2012解决方案的TeamCity中的MSBuild,visual-studio-2010,visual-studio,visual-studio-2012,msbuild,teamcity,Visual Studio 2010,Visual Studio,Visual Studio 2012,Msbuild,Teamcity,我有一个VS 2012网络项目/sln,我正试图在TeamCity中构建它。它使用安装在TeamCity上的.NET 4.5 TeamCity服务器仅安装了VS 2010 我在生成运行时遇到此错误: C:\BuildAgent\work\d5bc4e1b8005d077\CUSAAdmin.Web\CUSAAdmin.Web.csproj(799, 3): error MSB4019: The imported project "C:\Program Files (x86)\MSB

我有一个VS 2012网络项目/sln,我正试图在TeamCity中构建它。它使用安装在TeamCity上的.NET 4.5

TeamCity服务器仅安装了VS 2010

我在生成运行时遇到此错误:

C:\BuildAgent\work\d5bc4e1b8005d077\CUSAAdmin.Web\CUSAAdmin.Web.csproj(799, 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 <Import> declaration is correct, and that the file exists on disk. Project CUSAAdmin.Web\CUSAAdmin.Web.csproj failed. 
 Project CUSAAdmin.sln failed. 
C:\BuildAgent\work\d5bc4e1b8005d077\CUSAAdmin.Web\CUSAAdmin.Web.csproj(799,3):
错误MSB4019:
引进项目
找不到“C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets”。
确认声明中的路径正确,并且文件存在于磁盘上。项目CUSAAdmin.Web\CUSAAdmin.Web.csproj失败。
项目CUSAAdmin.sln失败。
它正在尝试使用Visual Studio 2012(v11.0)来构建

我已经在build.xml中将VisualStudioVersion设置为10

 <Target Name="BuildPackage">
   <MSBuild Projects="CUSAAdmin.sln" ContinueOnError="false" 
     Targets="Rebuild" 
      Properties="Configuration=$(Configuration); VisualStudioVersion=10.0"  />

在项目内部,它也默认为VS2010

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

10
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)

事实证明它非常简单。要使MSBuild作为构建器在TeamCity中由VS2012生成的解决方案上运行VS2010,只需按如下方式设置构建配置的环境变量:

Name: env.VisualStudioVersion 
Value: 10.0


注意TeamCity不需要安装VS2012。实际上,您不需要在CI服务器上安装Visual Studio。只需将几个文件夹从开发计算机复制到CI服务器上的同一位置

VS 2015:

  • C:\ProgramFiles(x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web
  • C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications
与2013年相比:

  • C:\ProgramFiles(x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web
  • C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications
VS 2012:

  • C:\ProgramFiles(x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web
  • C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications
VS 2010:

  • C:\ProgramFiles(x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web
  • C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications
.NET 4.6:

  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.6
.NET 4.5.2:

  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5.2
.NET 4.5.1:

  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5.1
.NET 4.5:

  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.5
.NET 4.0.1:

  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.0.1
.NET 4.0:

  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.0
或者,您可以将它们复制到项目的子目录中,并更改MSBuild(通常是
.csproj
.vbproj
)文件中的
位置

完成此操作后,您的项目将编译。您仍然应该将VisualStudioVersion显式设置为您正在使用的版本,以确保设置正确

注意:此解决方案适用于所有项目类型(包括web项目)。对于一个网站(没有项目文件),我最终安装了与我正在使用的.NET SDK版本相匹配的,因为缺少注册表项导致它无法生成

如上所述:

  • 安装nuget
    MSBuild.Microsoft.VisualStudio.Web.targets
  • 编辑.csproj文件
替换:

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

与:



显然,您必须确保在

中的nuget安装和路径上的版本都与您的案例相匹配,我完全不同意更改项目文件,因为这可能会影响其他开发人员。这是我的工作原理,因为MS build文件夹中缺少v11.0文件夹: 1) 创建v111

  • 在C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio上创建v11.0文件夹
  • 从我的开发框“C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v11.0”复制Web和WebApplications文件夹
  • 糟糕!干劲十足\
  • 注意:我安装了“Microsoft Visual Studio 2012 Shell(独立)可再发行软件包”

  • 首先,TeamCity不需要任何版本的Visual Studio来构建。使用MSBuild运行程序配置项目中的生成步骤时,TeamCity需要知道要使用哪个版本的MSBuild。这是一个构建步骤的设置。必须根据生成计算机上安装的.NET工具在生成步骤配置中选择正确的MSBuild版本。TeamCity将使用该值确定位置路径,并在调用MSBuild时设置环境变量


    VisualStudio 2012/2013的问题在于,它仅由TeamCity从8.1.0开始支持。因此,如果您的TeamCity版本在8.1之前。您需要升级到最新的8.1.x才能查看MSBuild Tools 2013的设置。在生成步骤设置中选择正确的MSBuild版本后,问题将消失。有关此处阅读的详细信息:

    或者,您可以将所需的生成目标从c:\Program Files(x86)\MSBuild复制到项目的子目录(例如。\build),确保保留结构并将以下内容添加到csproj中:

    <!-- redirect msbuild path so targets can be added to source control -->
    <PropertyGroup>
      <MSBuildExtensionsPath32>..\Build\</MSBuildExtensionsPath32>
    </PropertyGroup>
    
    
    ..\Build\
    
    例如,如果我的项目根是C:\Dev\MyProjSln\MyProj

    • 创建文件夹C:\Dev\MyProjSln\Build\Microsoft\VisualStudio\version\WebApplications\
    • <!-- redirect msbuild path so targets can be added to source control --> <PropertyGroup> <MSBuildExtensionsPath32>..\Build\</MSBuildExtensionsPath32> </PropertyGroup>