运行MSBuild无法读取SDKToolsPath


130

你好,我在运行一个NAnt脚本时遇到了一个问题,该脚本用于在与VS2008及其相关工具一起编译时正确地构建基于.Net 2.0的网站。我最近将所有项目/解决方案文件都升级到了VS2010,现在我的构建因以下错误而失败:

[exec] C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(2249,9):错误MSB3086:任务使用S dkToolsPath“”或注册表找不到“ sgen.exe”键“ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A”。确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下正确的处理器特定位置,并且已安装Microsoft Windows SDK

现在,我确实在构建服务器上安装了Windows SDK的早期版本(.Net 3.5),并安装了完整的.Net 4.0框架,但是我没有在Windows SDK的.Net 4.0特定版本上运行。

经过一番试验和研究,我终于设置了一个新的环境变量“ SDKToolsPath”,并将其指向Windows 6.0 sdk文件夹中sgen.exe的副本。这产生了相同的错误,但是让我注意到,即使设置了SDKToolsPath环境变量IS(确认我可以在命令行中“回显”它并且具有期望的值),该错误消息似乎也表明它是不被读取(请注意用空引号引起来)。

我发现的大多数信息都是特定于.Net 3.5(或更早版本)的。目前还没有多少4.0相关。搜索错误代码MSB3086也不产生任何作用。知道这可能是什么吗?

史考特


这篇文章中的相关问题。我也在那里发布了答案。stackoverflow.com/questions/1109955/...
迭戈C.

Answers:


15

我不得不硬着头皮在我们的构建服务器上安装VS 2010,以解决此问题。据我所知,在MSDN上任何地方都没有Windows SDK的7.0A版本。但是,安装VS 2010似乎是要安装它,并在Program Files \ Microsoft SDKs \ Windows中创建7.0A regkey和7.0A文件夹。


9
我不想在服务器上安装Visual Studio 2010。我更喜欢Simmo在下面将当前Windows SDK设置为v7.1的建议。WindowsSdkVer.exe位于C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Setup(假设它已安装到C:\ Program Files)。
Philippe

55
我发现,如果仅安装Windows SDK 7.1和.NET 4.0。MSBuild没有为SDK40ToolsPath和SDK35ToolsPath设置正确的路径。要解决此问题,我必须更改HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0中的一些条目:“ SDK40ToolsPath” =“ $(Registry:HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Microsoft \\ Microsoft SDKs \\ Windows \\ v7 .1 \\ WinSDK-NetFx40Tools-x86 @ InstallationFolder)“同样,将SDK35ToolsPath和FrameworkSDKRoot中的” v7.0A“更改为” v7.1“。
BlueMonkMN 2011年

7
嘘-我自己又遇到了同样的问题,用谷歌搜索并找到了自己的答案!:)似乎有些东西重置了我的更改,我想我必须再次手动应用它。
BlueMonkMN 2011年

3
啊!最新的.NET 4.0补丁(2011-08-11)覆盖了这些注册表设置!
si618 2011年

8
更新我之前的回复。看来在64位操作系统上,可能还需要更新HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolsVersions \ 4.0中的类似值,并且可能有必要安装8.0 SDK或更新HKEY_LOCAL_MACHINE \中的值SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0 \ 11.0和HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolsVersions \ 4.0 \ 11.0除安装8.0 SDK以外,我已经完成了所有上述操作,直到我(一批时)才能编译步骤)包括我对所有4.0 \ 11.0节点的更新。
BlueMonkMN

227

我不能将Visual Studio放在构建服务器上。

SDK v7.0A是随Visual Studio 2010一起安装的SDK(A表示这是VS版本)。从那时起,发布了新版本。适用于Windows 7和.NET Framework AKA v7.1的 Microsoft Windows SDK 。

我已经在我的构建服务器上安装了它。然后通过Windows SDK 7.1命令提示符(开始=>所有程序=> Microsoft Windows SDK 7.1),将SDK的默认版本设置为7.1。

脚步:

cd Setup

WindowsSdkVer.exe -version:v7.1

编辑以包含LordHits的评论:不需要安装整个SDK。仅安装“ .NET开发/智能和参考程序集”和“ .NET开发/工具”选项就足够了。


4
这对我来说非常理想,并且可以将文件从VS计算机复制到C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications中。
dnolan 2010年

1
我遇到了与原作者相同的问题,这个答案解决了!我不必在Build计算机上安装Visual Studio 2010。
SolutionYogi 2010年

37
另外,为了澄清起见,不需要安装整个SDK。仅安装“ .NET开发/智能和参考程序集”和“ .NET开发/工具”选项就足够了。这并从dnolan的注释中复制文件。
LordHits

感谢您提供此解决方案,它对我的​​构建服务器非常有效!仅供参考-对于可能会质疑的任何人,构建服务器是Windows Server 2008 x64。
亚当·韦伯

非常感谢您的回答;与此同时也遇到了相同的问题。
日安倍晋三

20

只需将值为Off的GenerateSerializationAssemblies参数传递给您的MsBuild。

msbuild.exe /p:GenerateSerializationAssemblies=Off

7
msbuild.exe / p:GenerateSerializationAssemblies = Off
Daniel

2
或在Web服务的项目属性的“构建”选项卡中设置“生成序列化程序集:关闭”。
samneric

6
这到底是做什么的?
粉碎

1
GOTCHA:如果在“构建”选项卡上将其关闭,请确保对相关的构建配置(在“构建”选项卡顶部的“ DropDown”)执行此操作,因为这只是问题所在的构建服务器,所以我不得不在“发布”配置中进行更改。
Myster

14
我喜欢只是随机切换构建标志,不知道它们实际做什么。
AaronLS

14

我手动将变量传递给生成服务器上的MSBuild。

msbuild.exe MyProject.csproj "/p:TargetFrameworkSDKToolsDirectory=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools" "/p:AspnetMergePath=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools"

1
这就是我最终在没有Visual Studio和Build Tools 2019的服务器中为Windows 10 SDK所做的工作。其他解决方案似乎都无济于事,而这个解决方案以一种干净的方式解决了问题。
尼古拉斯Fantone

8

我最近在我们的构建服务器上遇到了类似的问题。

我从其计算机(已安装VS2010)将7.0A文件夹(C:\ Program Files \ Microsoft SDKs \ Windows \ 7.0A)复制到同一位置的生成服务器。

创建以下注册表项后:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A。将InstallationFolder设置为C:\ Program Files \ Microsoft SDKs \ Windows \ 7.0A。

如果您对构建服务器上的注册表有何疑问,也可以引用已安装VS2010的计算机上的注册表。


对我来说,Simmo的答案不起作用-但是此注册表黑客确实有用(Win 2K3 SP2)。
FinnNk 2011年

7

我遇到了相同的错误,但情况有所不同:使用VS 2010 Express并尝试使用Simmo的答案来显式设置SDK版本-但是WindowsSdkVer.exe(版本设置工具)似乎不针对Express(因为它的局限性是可以理解的) )。

我在Win 7 Prof.上使用VS 2010 Express,并且它始终希望使用Win SDK的v7.0A(不具有所有所需的exe),并且无论我使用哪个版本明确设置为当前版本都无关紧要WindowsSdkVer.exe(尽管我仅安装了2010 Ex,但仍在报告它设置了SDK的当前版本,但是VS2008。)

因此,我便宜的解决方法是安装v7.0 WIN SDK(或其他版本,例如v7.1),然后将其文件系统文件夹重命名为v7.0A-基本上我只是对VS 2010 Express撒谎,但现在可以使用!


5

您的项目之一使用sgen.exe(服务器生成器)生成Web服务。您需要安装SDK来构建服务器或从项目中删除Web服务引用。


1
或在Web服务的项目属性的“构建”选项卡中设置“生成序列化程序集:关闭”。
samneric

1
GOTCHA:如果在“构建”选项卡上将其关闭,请确保对相关的构建配置(在“构建”选项卡顶部的“ DropDown”)执行此操作,因为这只是问题所在的构建服务器,所以我不得不在“发布”配置中进行更改。
Myster 2015年

4

我怀疑目标文件覆盖了工具路径,我对此文件进行了快速浏览,并将其中的一些目标下的SDKToolsPath设置为$ TargetFrameworkSDKToolsDirectory。我认为您无论如何都不需要在环境中进行设置,但是它们可能需要在项目文件中进行修复。

请注意,根据此页面http://nant.sourceforge.net/ Nant不支持.Net 4.0,这可能是真正的问题吗?

对不起,我知道这并不能真正回答您的问题:(


正确,NAnt目前尚不支持VS2010的项目/解决方案文件格式,这就是为什么我要求MSBuild进行实际的编译步骤。将签出目标文件。
斯科特·梅菲尔德,2010年

4

我在全新的Windows 10计算机上遇到了相同的问题。我的设置:

  • Windows 10
  • 已安装Visual Studio 2015
  • Windows 10 SDK

但是我无法构建.NET 4.0项目:

Die Aufgabe权限“ AL.exe” mit dem SdkToolsPath-Wert“” oder demRegistrierungsschlüssel“ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v8.0A \ WinSDK-NetFx40Tools-x86

解决方案:尝试(并失败)安装Windows 7 SDK之后(因为那也包括.NET 4.0 SDK),我需要安装Windows 8 SDK并确保已安装“ .NET Framework 4.5 SDK”。

太疯狂了...但是奏效了。


这也确实对Windows 10有所帮助。
bourbert

3

您实际上没有安装SDK版本7.0A吗?这是您需要解决的问题。查看VS2010安装日志文件,看看出了什么问题。SDK应该存在于c:\ program files \ microsoft sdks \ windows \ 7.0a中,并且列出的注册表项也必须存在。不能使用6.0a版本的sgen.exe运行,这势必会使用错误的编译器。


1
记住,这是一个构建服务器,因此安装完整的VS2010环境不是我的首选。我找不到Windows SDK 7.0a的任何可用下载
Scott Mayfield

3
我没看到问题。在配置与开发机器不匹配的机器上运行构建,这将使您很快就筋疲力尽。
汉斯·帕桑特

3

设置Sdk40ToolsPath而不是SdkToolsPath指定安装目录以外的位置。

我用AL.exe遇到了类似的问题,因为我只是将工具复制到了构建机器上,而不是安装了SDK,因此缺少了通常的注册表项。我运行了带有诊断输出(/ verbosity:diagnostic)的构建,并注意到已定义了多个SDK工具路径:Sdk40ToolsPath,Sdk35ToolsPath和SdkToolsPath。设置Sdk40ToolsPath指向相应的SDK版本的bin文件夹为我解决了这个问题。


您在哪里设置Sdk40ToolsPath?
Michael Freidgeim

我认为它需要添加到环境路径中。但是,它对我不起作用。
蒂莫西·李·罗素

抱歉,很久以前我忘记了细节,但是我认为它要么是环境变量,要么在MSBuild项目文件中设置。还要注意,原始问题与.NET Framework 4.0 / VS2010有关,但更高的框架版本可能需要不同的变量。
IanS

2

我同意IanS的回答。无需安装新的SDK。只要确保MSBuild的注册表项值SDK35ToolsPath和SDK40ToolPath指向正确的注册表项值即可。

在我的情况下,我的项目针对.NET 3.5,并且我必须将密钥HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0的SDK35ToolsPath设置为$ {Registry:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v6.0A \ WinSDKNetFxTools @ InstallationFolder)。一切正常。


2

我们有一台winXP build pc,并使用Visual Build Pro 6来构建我们的软件。由于我们的某些开发人员使用VS 2010,因此项目文件现在包含对“工具版本4.0”的引用,据我所知,这告诉Visual Build即使我们仅针对.NET 3.5进行构建,也需要在某处找到sdk7.x。 。这导致它找不到lc.exe。我试图通过将所有宏指向PC上安装的VS2008附带的6.0A sdk来愚弄它,但这没用。

我最终通过下载并安装sdk 7.1使其正常工作。然后,我为7.0A创建了一个注册表项,并将安装路径指向7.1 sdk的安装路径。现在,它很高兴地找到了兼容的“ lc.exe”,并且所有代码都能正常编译。我有一种感觉,即使没有安装VS2010,我现在也可以编译.NET 4.0代码,但是我还没有尝试过。


2

ToolsVersion =“ 4.0”在我的MSBuild项目中为我完成:

<Project DefaultTargets="Do" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

好吧,以我为例,我在VS 2015中使用了ToolsVersion =“ 14.0”,这解决了问题
AndrewSilver

2

首先,请确保您已经下载了dotNetFx40_Full_x86_x64.exe并已安装(通常与Visual Stdio绑定)。

然后在系统变量处快速设置一个新的环境变量。如下所示: "TargetFrameworkSDKToolsDirectory":"C:\Program Files (x86)\Microsoft SDKs\Windows\vxx.0A\bin\NETFX 4.6.1 Tools" //note:the path:'\vxx.0A\' is a variable indicating your version. it's '\v10.0A\' for me.


这正在解决问题。如果有人遇到与我相同的问题,这只是一个提示。Env变量需要称为TargetFrameworkSDKToolsDirectory而不是SdkToolsPath!
马库斯

1

我遇到了同样的问题,并安装了Windows SDK 7.0和Windows SDK 7.1,但都没有解决该问题。对我来说,问题的原因是使用.NET Framework 2.0的Target Framework构建了令人反感的类库。

我将其更改为.NET Framework 4.0,并在本地工作,并且在Build服务器中检查时成功构建了它。


1

我遇到了类似的问题,尤其是msbuild失败:MSB3086,MSB3091:未找到“ AL.exe”,“ resgen.exe”

在64位Windows 7计算机上,我安装了.Net Framework 4.5.1和Windows 8.1的Windows SDK。

尽管SDK的安装程序说它是最新的,但可能不是。我解决了此问题,方法是删除所有已安装的SDK版本,然后按以下顺序安装以下内容:

http://www.microsoft.com/zh-cn/download/details.aspx?id=3138

http://www.microsoft.com/zh-cn/download/details.aspx?id=8279

http://msdn.microsoft.com/zh-CN/windows/desktop/hh852363.aspx

http://msdn.microsoft.com/zh-CN/windows/desktop/aa904949.aspx


1

简短的答案:在.csproj文件中,有一种方法可以使用SGenToolPath指定sgen.exe的路径:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
  <PropertyGroup>
    <SGenToolPath>C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools</SGenToolPath>
  </PropertyGroup>

您的路径可能不同,但是SGenToolPath是您想要的。

有关其他MSBuild项目常见属性的列表,请参见:https : //msdn.microsoft.com/zh-cn/library/bb629394.aspx

我们最终在.csproj文件中使用了此SGenToolPath设置,而不是在构建服务器上编辑注册表值。在我的本地计算机上编辑注册表值也可以,但是有点复杂,我们不想弄乱构建服务器上的注册表。

对于注册表:在那种情况下,问题在于HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild下的SDK40ToolsPath(s)指向注册表值$(Registry:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v8.0A \ WinSDK-NetFx40Tools-x86 @ InstallationFolder)不存在。我只是直接用实际路径替换了它。


1

我也尝试在我的混乱工作场所计算机上使用Visual Studio 2017构建插件时遇到了此问题。如果您在互联网上搜索“无法找到resgen.exe”,则可以找到所有类似的建议,只需使用regedit编辑Windows注册表并在此处创建新密钥,然后将该文件夹的内容复制并粘贴到这另一个文件夹,等等等等。'

我花了数周的时间用regedit弄乱了Windows注册表,可能将十几个子项和复制粘贴的ResGen.exe添加到许多不同的目录中,有时将其放置在“ bin”文件夹中,有时仅将其保留在主文件夹中,等等

最后,我意识到,“嘿,如果Visual Studio提供了更详细的错误消息,那么这都不是问题。” 因此,为了获得有关该错误的更多详细信息,我直接从命令行在我的* .csproj文件上运行了MSBuild.exe :

 "C:/Windows/Microsoft.NET/Framework/v4.0.3.0319/MSBuild.exe C:/Users/Todd/Plugin.csproj -fl -flp:logfile="C:/Users/Todd/Desktop/error_log.log";verbosity=diagnostic"

当然,您必须更改路径详细信息以适合您的情况,但是请确保放入1)MSBuild.exe的完整路径2)* .csproj文件的完整路径3)-fl -flp: logfile =部分,它将告诉MSBuild在此过程中执行的每个步骤都将创建一个日志文件,4)您想要保存* .log文件的位置,以及5); verbosity = diagnostic,它基本上只是告诉MSBuild在* .log文件中包含大量的详细信息。

完成此操作后,构建将一如既往地失败,但是您将看到一个* .log文件,该文件准确显示了MSBuild查找ResGen.exe文件的位置。 就我而言,在* .log文件底部附近,我发现:

Compiling plug-in resources (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.2\WinSDK-NetFx40Tools-x86 (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.1\WinSDK-NetFx40Tools-x86 (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools-x86 (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v8.1a\WinSDK-NetFx40Tools-x86 (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v8.0a\WinSDK-NetFx40Tools-x86 (Task ID:41)
MSBUILD: error : Failed to locate ResGen.exe and unable to compile plug-in resource file "C:/Users/Todd/PluginResources.resx"

因此,基本上,MSBuild在五个单独的目录中查找ResGen.exe,然后放弃了。这是您无法从Visual Studio错误消息中获得的详细信息,它可以解决问题:只需使用regedit为这五个位置中的任何一个创建密钥,然后将值“ InstallationFolder”放入该密钥中,它应指向ResGen.exe所在的文件夹(在我的情况下为“ C:\ Program Files \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.7.2工具”)。

如果您是像我这样的人文学科专业人士,并且没有计算机背景知识,则可能会遇到这样的错误,您可能会想直接编辑Windows注册表中的内容,然后将ResGen.exe复制粘贴到整个位置(这是当然是不好的做法)。最好遵循上面概述的过程:1)直接在* .csproj文件上运行MSBuild.exe,以查找MSBuild正在寻找ResGen.exe的确切位置,然后2)精确编辑Windows注册表,以便MSBuild可以找到ResGen。可执行程序。


我尝试了此操作,但是由于某种原因,我没有得到您显示的路径列表。我在此站点上找到了与您类似的帖子:community.sdl.com/developers-more/developers/…因此,我知道它应该可以工作,但无济于事。您正在使用哪个版本的MSBuild?
user11809641

看起来我正在使用MSBuild 4.0.30319版本。我也在此计算机上安装了3.5、3.0和2.0.50727版本。我试图在我的* .csproj文件上运行那些版本的MSBuild(与上面概述的方式相同),但是它没有用……甚至没有创建* .log文件。///当您在* .csproj文件上运行MSBuild时,计算机是否至少产生一个* log文件?我的理解是,这里有一个日志文件,只是没有关于ResGen.exe时搜索到的路径的特定信息,对吗?
todbott

看起来我具有相同版本的MSBuild(4.0.30319)。是的,你是对的。我正在获取一个日志文件,但是它没有提供有关注册表路径的任何信息。您最终使用了上面五个发布路径中的哪个?
user11809641

我使用了列表中的第一个路径-只是在键SOFTWARE \ WOW6432Node \ Microsoft \ Microsoft SDKs \ NETFXSDK \ 4.6.2 \ WinSDK-NetFx40Tools-x86中添加了“ InstallationFolder”。另外,*。log文件实际上非常长,以我为例。我用肉眼找不到路径信息。我最终在记事本中打开* .log文件,并搜索“ ResGen.exe”,这引起了我的注意(路径信息)。
todbott

1
超级恭喜!您已经成为少数人(我猜是数百人),他们克服了错误和奥秘,并成功地为Trados编译了一个插件。祝您插件发布顺利,请在SDL Appstore上见!
todbott

1

我通过将其作为命令行参数传递给msbuild.exe来修复它:

您的里程会因系统上的SDK版本而异

/p:TargetFrameworkSDKToolsDirectory="C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools

0

除了注册表mod之外,您可能还需要在Visual Studio中更改设置为.net sdk的版本。

我遇到了这个问题,因此决定检查项目调试设置。

项目=>工具栏属性=>调试高级编译选项按钮

目标框架(所有配置)均设置为3.0,这在我的系统上不存在。

我将其更改为4.0,然后不得不重新启动项目和Visual Studio 2010。

然后,该项目没有错误地构建并运行。


我犯了一个错误,它位于以下位置。项目=>工具栏属性=>编译高级编译选项按钮我还创建了一个新项目,并将新项目.net设置为3.0。因此,也需要更改默认设置。斯科特·托维
Scott Tovey)2012年

我发现在创建项目时,在窗口顶部有一个所有框架的下拉列表。列出所有内容,无论是否已安装。选择框架并从该列表创建项目后,它将保留为默认设置,直到将其更改为新项目的另一个框架为止。这有点鲁ck,列表中应该只包含系统上安装的框架。
Scott Tovey 2012年

0

我有一个类似的问题。我已经使用完成了一个项目Visual Studio 2010,然后在使用进行编译时收到了以上错误Visual Studio 2012。我简单复制的所有内容C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0AC:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A并解决我的问题。


3
我希望对世界上最糟糕的解决方案投赞成票。就是这样。
jonypony3

0

我只是使用最初在Visual Studio 2010中创建(并由Visual Studio 2010和TFS 2010构建)的.sln文件遇到此错误。我已经修改了解决方案文件,以不构建不应在特定配置中构建的项目,而Visual Studio从以下位置更改了解决方案文件的标题:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010

至:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
MinimumVisualStudioVersion = 10.0.40219.1

将其设置回原始2010版本可以解决我的问题。我想Visual Studio中的向后兼容性还没有完善。


0

尝试使用Visual Studio的“修复”。它为我工作。


0

CMD包装器
我从这里尝试了所有东西,甚至更多。没有任何帮助。

我为MSBuild和DevEnv.com应用了CMD包装器。
这种包装器的主要思想是通过从Visual Studio提供的命令提示符中调用来创建一个准备好的环境。然后将标准输入参数传递给MSBuild或DevEnv.com的调用。

无论如何,现在我可以在构建服务器上从不同的Visual Studio版本构建项目。

使用方法
我必须用对批处理文件包装程序的调用来替代对MSBuild和DevEnv的调用。
而且我没有更改任何输入参数。作为我的MSBuild包装器调用的示例:

MsBuild_Wrapper.bat MySolution.sln /target Build /property:Configuration=Release

现成的解决方案
实际上,从VS 2010迁移到VS 2015时遇到了很多麻烦。但这是第一个也是最困难的。
因此,这里是我关于构建服务器的适度救援方法。从一开始可能很难理解所有这种CMD样式,但是我希望任何逻辑都是显而易见的。

提示

MSBuild Command Prompt for Visual StudioDeveloper Command Prompt for Visual Studio
我将它们适当地用于MSBuild和DevEnv.com。但是,也许MSBuild命令提示符就足够了。

对于VS 2015,这些命令提示符在此处 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\。或浏览Windows程序菜单。

要将所有输入参数传递给我使用的批处理文件中的MSBuild或DevEnv CALL MSBuild %*

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.