MSBuildの実行がSDKToolsPathの読み取りに失敗する


130

VS2008とそれに関連するツールでコンパイルすると、.Net 2.0ベースのWebサイトを適切に構築するために使用されていたNAntスクリプトの実行に少し問題があります。最近すべてのプロジェクト/ソリューションファイルを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フレームワークがインストールされていますが、.Net 4.0固有のバージョンのWindows SDKを実行していません。

少し実験と調査を行った後、ついに新しい環境変数「SDKToolsPath」をセットアップし、それをWindows 6.0 sdkフォルダーのsgen.exeのコピーにポイントしました。これは同じエラーを生成しましたが、SDKToolsPath環境変数が設定されていても(コマンドラインでそれを「エコー」できることと、期待値が設定されていることを確認)、エラーメッセージが読まれていない(空の引用符に注意)。

私が見つけた情報のほとんどは.Net 3.5(またはそれ以前)固有のものです。まだ4.0はあまり関連していません。エラーコードMSB3086を検索しても、有用なものは何も生成されませんでした。これが何であるか考えていますか?

スコット


この投稿の関連する問題。そこにも回答を掲載しました。stackoverflow.com/questions/1109955/...
ディエゴ・C.

回答:


15

この問題を修正するには、弾丸をかじってビルドサーバーにVS 2010をインストールする必要がありました。私の知る限り、MSDNのどこにも7.0AバージョンのWindows SDKはありません。ただし、VS 2010をインストールするとインストールされるように見え、Program Files \ Microsoft SDKs \ Windowsに7.0A regkeyと7.0Aフォルダーが作成されます。


9
サーバーにVisual Studio 2010をインストールしたくない。私は、現在のWindows SDKをv7.1に設定するというSimmoの提案を好みます。WindowsSdkVer.exeはC:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Setupにあります(C:\ Program Filesにインストールされていると想定しています)。
フィリップ

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
ARRRGH!最新の.NET 4.0パッチ(2011-08-11)がこれらのレジストリ設定を上書きしました!
si618 2011

8
以前の回答を更新します。64ビットOSでは、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のインストールを除いて上記のすべてを行い、私が(1つのバッチとして)までコンパイルできませんでしたステップ)すべての4.0 \ 11.0ノードへの更新が含まれています。
BlueMonkMN 2013

227

ビルドサーバーにVisual Studioを配置することはできませんでした。

SDK v7.0Aは、Visual Studio 2010とともにインストールされるSDKです(AはこれがVSリリースであることを示します)。それ以来、新しいバージョンがリリースされました。Microsoft Windows SDK for Windows 7および.NET Framework AKA v7.1

これをビルドサーバーにインストールしました。次に、Windows SDK 7.1コマンドプロンプト([スタート] => [すべてのプログラム] => [Microsoft Windows SDK 7.1])を使用して、SDKのデフォルトバージョンを7.1に設定しました。

手順:

cd Setup

WindowsSdkVer.exe -version:v7.1

LordHitsのコメントを含めるように編集します。SDK全体をインストールする必要はありません。「.NET開発/ Intellisenseおよび参照アセンブリ」と「.NET開発/ツール」オプションのみをインストールするだけで十分です。


4
これは、VSマシンからファイル全体をC:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplicationsにコピーすることと相まって、私にとっては完全に機能しました。
dnolan

1
私は元の作者と同じ問題に直面していましたが、この答えで解決しました!ビルドマシンにVisual Studio 2010をインストールする必要はありませんでした。
SolutionYogi

37
また、明確にするために、SDK全体をインストールする必要はありません。「.NET開発/ Intellisenseおよび参照アセンブリ」と「.NET開発/ツール」オプションのみをインストールするだけで十分です。これと、dnolanのコメントからファイルをコピーします。
LordHits、2010

このソリューションのおかげで、ビルドサーバーで完璧に機能しました!参考までに、疑問に思う方のために、ビルドサーバーはWindows Server 2008 x64です。
Adam Weber

この回答をどうもありがとう。これについても同じ問題が発生しました。
阿部

20

MsBuildに値がOffのGenerateSerializationAssembliesパラメーターを渡すだけです。

msbuild.exe /p:GenerateSerializationAssemblies=Off

7
msbuild.exe / p:GenerateSerializationAssemblies = Off
Daniel

2
または、Webサービスのプロジェクトプロパティの[ビルド]タブで[シリアル化アセンブリを生成する:オフ]を設定します。
samneric 2014年

6
これは正確に何をしますか?
クラッシュ

1
GOTCHA:ビルドタブでオフにした場合は、関連するビルド構成(ビルドタブの上部にあるドロップダウン)でこれを実行してください。私の場合、問題のあるビルドサーバーだけだったので、これを「リリース」構成で変更します。
Myster 2015

14
ビルドフラグを実際に何の手掛かりもなく、ランダムに切り替えるのが大好きです。
AaronLS 2017

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とビルドツール2019を使用しないサーバーでWindows 10 SDKを作成するために行ったものです。他のソリューションはどれも役に立たないようで、これはクリーンな方法でうまく機能しました。
ニコラスFantone

8

最近、ビルドサーバーで同様の問題が発生しました。

7.0Aフォルダー(C:\ Program Files \ Microsoft SDKs \ Windows \ 7.0A)をコンピューター(VS2010がインストールされている)から同じ場所にあるビルドサーバーにコピーしました。

次のレジストリキーを作成した後:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A。InstallationFolderをC:\ Program Files \ Microsoft SDKs \ Windows \ 7.0Aに設定します。

ビルドサーバーのレジストリの処理方法がわからない場合は、VS2010がインストールされているマシンのレジストリを参照することもできます。


私にとって、シモの答えはうまくいきませんでした-このレジストリハックはうまくいきました(Win 2K3 SP2)。
FinnNk、2011

7

私は同じエラーに遭遇しましたが、状況が異なります:VS 2010 Expressを使用してSimmoの回答を使用してSDKバージョンを明示的に設定しようとしました-ただし、WindowsSdkVer.exe(バージョン設定ツール)はExpressをターゲットにしていないようです(制限があるため理解可能) )。

私はWin 7教授でVS 2010 Expressを使用していて、常にWin SDKのv7.0A(必要なexeがすべて含まれていない)を使用したいと思っています。また、現在のバージョンとして明示的に設定しているバージョンは関係ありません。 WindowsSdkVer.exe(それはSDKの現在のバージョンを設定したと報告し続けますが、VS 2008の場合は2010 Exしかインストールされていませんが)

したがって、私の安価な回避策は、v7.0 WIN SDK(またはv7.1のような別のバージョン)をインストールし、そのファイルシステムフォルダーの名前をv7.0Aに変更することでした。基本的に、私はVS 2010 Expressに嘘をついただけですが、今は機能します!


5

プロジェクトの1つがsgen.exe(Server Generator)を使用してWebサービスを生成します。サーバーを構築するか、プロジェクトからWebサービス参照を削除するには、SDKをインストールする必要があります。


1
または、Webサービスのプロジェクトプロパティの[ビルド]タブで[シリアル化アセンブリを生成する:オフ]を設定します。
samneric 2014年

1
GOTCHA:ビルドタブでオフにした場合は、関連するビルド構成(ビルドタブの上部にあるドロップダウン)でこれを実行してください。私の場合、問題のあるビルドサーバーだけだったので、これを「リリース」構成で変更します。
Myster 2015

4

ターゲットファイルがツールパスを上書きしているのではないかと思います。このファイルをざっと見て、そこにあるいくつかのターゲットの下でSDKToolsPathを$ TargetFrameworkSDKToolsDirectoryに設定しています。とにかく環境でこれらを設定する必要があるとは思いませんが、プロジェクトファイルで修正する必要があるかもしれません。

このページによると、http: //nant.sourceforge.net/ Nantは.Net 4.0をサポートしていないことに注意してください。これが本当の問題でしょうか?

申し訳ありませんが、これは実際にはあなたの質問に答えないことを知っています:(


NAntはまだVS2010のプロジェクト/ソリューションファイル形式をサポートしていません。そのため、実際のコンパイル手順のためにMSBuildを呼び出します。ターゲットファイルをチェックアウトします。
スコットメイフィールド

4

新しいWindows 10マシンでも同じ問題が発生しました。私のセットアップ:

  • ウインドウズ10
  • Visual Studio 2015がインストールされています
  • Windows 10 SDK

しかし、.NET 4.0プロジェクトを構築できませんでした。

Die Aufgabe konnte "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 2017

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
私は問題を見ません。構成のマシンでビルドを実行すると、開発マシンと一致しなくなります。これは、すぐに飽きてしまう問題です。
ハンスパッサント2010

3

インストールディレクトリ以外の場所を指定するのSdk40ToolsPathではなく設定SdkToolsPathします。

SDKをインストールするのではなく、ビルドマシンにツールをxcopiし、通常のレジストリキーが見つからないため、AL.exeで同様の問題が発生しました。診断出力(/ verbosity:diagnostic)を使用してビルドを実行したところ、Sdk40ToolsPath、Sdk35ToolsPath、SdkToolsPathといういくつかのSDKツールパスが定義されていることに気付きました。Sdk40ToolsPathを適切なSDKバージョンのbinフォルダーを指すように設定すると、問題が解決しました。


Sdk40ToolsPathをどこに設定しましたか?
Michael Freidgeim 2016年

環境パスに追加する必要があると思います。しかし、それは私にはうまくいきませんでした。
Timothy Lee Russell、

すみません、これはかなり前に詳細を忘れてしまいましたが、環境変数であるか、MSBuildプロジェクトファイルで設定されていたと思います。また、元の質問は.NET Framework 4.0 / VS2010に関するものですが、それ以降のバージョンのフレームワークでは異なる変数が必要になる場合があります。
IanS 2017

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ビルドPCがあり、Visual Build Pro 6を使用してソフトウェアをビルドしています。一部の開発者はVS 2010を使用しているため、プロジェクトファイルには「ツールバージョン4.0」への参照が含まれています。これからわか​​ることは、.NET 3.5のみを対象にビルドしている場合でも、Visual Buildがどこかに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変数は、SdkToolsPathではなくTargetFrameworkSDKToolsDirectoryと呼び出す必要があります!!!
マーカス

1

同じ問題があり、Windows SDK 7.0とWindows SDK 7.1をインストールしましたが、どちらも問題は修正されませんでした。私の問題の原因は、問題のクラスライブラリが.NET Framework 2.0のターゲットフレームワークでビルドされたことです。

私はそれを.NET Framework 4.0に変更してローカルで作業し、ビルドサーバーでチェックインすると正常にビルドされました。


1

同様の問題があり、特にmsbuildが失敗しました:MSB3086、MSB3091: "AL.exe"、 "resgen.exe"が見つかりません

64ビットのWindows 7マシンに、.Net Framework 4.5.1とWindows SDK for Windows 8.1をインストールしました。

SDKの設定では最新であると記載されていましたが、おそらく最新ではありませんでした。インストールされているSDKのすべてのバージョンを削除してから、以下をこの順序でインストールすることで問題を解決しました。

http://www.microsoft.com/en-us/download/details.aspx?id=3138

http://www.microsoft.com/en-us/download/details.aspx?id=8279

http://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx

http://msdn.microsoft.com/en-us/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/en-us/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レジストリを編集し、ここに新しいキーを作成して、このフォルダーの内容をコピーアンドペーストするだけです。この他のフォルダ、何とか何とか何とか何とか。

私は何週間もかけてWindowsレジストリをregeditでごちゃごちゃにして、おそらく数十のサブキーとコピー貼り付けされたResGen.exeを多くの異なるディレクトリに追加しました。等

結局、「ねえ、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ファイルに詳細のトンを含める。

これを行うと、ビルドはいつものように失敗しますが、MSBuildがResGen.exeファイルを探した場所正確に示す* .logファイルが残ります。 私の場合、*。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の5つの個別のディレクトリを調べて、あきらめました。これは、Visual Studioのエラーメッセージからは取得できない種類の詳細であり、問​​題を解決します。単にregeditを使用して、これら5つの場所のいずれか1つのキーを作成します。値「InstallationFolder」を入力します。 、ResGen.exeが存在するフォルダーを指している必要があります(私の場合は「C:\ Program Files \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.7.2 Tools」でした)。

コンピューターのバックグラウンドがない、私のような人文科学専攻の場合、このようなエラーが発生したときに、Windowsレジストリの全体を編集し、ResGen.exeをコピーして貼り付けたくなるかもしれません(これはもちろん、悪い習慣)。上記の手順に従うことをお勧めします。1)* .csprojファイルに対して直接MSBuild.exeを実行して、MSBuildがResGen.exeを探している正確な場所を見つけ、2)Windowsレジストリを正確に編集して、MSBuildがResGenを見つけられるようにします。 EXE。


私はこれを試しましたが、何らかの理由で、表示するパスのリストを取得できません。このサイトであなたに似た投稿を見つけました:community.sdl.com/developers-more/developers/…動作するはずですが、役に立ちません。どのバージョンのMSBuildを使用していますか?
user11809641

MSBuildバージョン4.0.30319を使用しているようです。このコンピュータには、バージョン3.5、3.0、および2.0.50727もインストールされています。これらのバージョンのMSBuildを* .csprojファイルで(上記と同じ方法で)実行しようとしましたが、機能しませんでした... * .logファイルも作成されませんでした。/// * .csprojファイルでMSBuildを実行すると、コンピューターは少なくとも*ログファイルを生成しますか?私の理解では、ログファイルがあり、ResGen.exeを検索するときに検索されたパスに関する特定の情報はありません-それは正しいですか?
todbott

同じバージョンのMSBuild(4.0.30319)を持っているようです。そして、はい、あなたは正しいです。ログファイルを取得していますが、レジストリパスに関する情報が何もありません。上記で投稿した5つのパスのうち、最終的に使用したものはどれですか。
user11809641

リストの最初のパスを使用しました。SOFTWARE\ WOW6432Node \ Microsoft \ Microsoft SDKs \ NETFXSDK \ 4.6.2 \ WinSDK-NetFx40Tools-x86キーに「InstallationFolder」を追加しただけです。また、*。logファイルは実際には非常に長く、私の場合は数千行です。肉眼では経路情報が見つからなかった。結局、メモ帳で* .logファイルを開いて「ResGen.exe」を検索すると、関連する領域(パス情報)に注意が向けられました。
todbott

1
おめでとうございます!あなたは、エラーとミステリーを乗り越え、実際にTradosのプラグインを正常にコンパイルした少数の人々(数百人と思います)の1人になりました。プラグインの公開で頑張ってください。SDLAppstoreでお会いしましょう!
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を再起動する必要がありました。

その後、プロジェクトはエラーなしでビルドされ、実行されました。


次のところに間違いがあるので間違えました。プロジェクト=>ツールバープロパティ=>コンパイルAdvanceコンパイルオプションボタン新しいプロジェクトも作成し、新しいプロジェクト.netを3.0に設定しました。したがって、デフォルト設定も変更する必要があります。スコットA.トベイ
スコットトベイ

プロジェクトを作成すると、ウィンドウの上部にすべてのフレームワークのドロップダウンリストがあることがわかりました。インストールされているかどうかに関係なく、すべてがリストされます。フレームワークを選択し、そのリストからプロジェクトを作成すると、新しいプロジェクトの別のフレームワークに変更するまで、デフォルトのままになります。これは少し無謀です。リストには、システムにインストールされているフレームワークのみを含める必要があります。
Scott Tovey

0

同様の問題がありました。私は使用Visual Studio 2010してプロジェクトを実行し、それを使用してコンパイルしたときに上記のエラーが発生しましたVisual Studio 2012。私のシンプルは、すべての内容をコピーC:\Program Files (x86)\Microsoft SDKs\Windows\v7.0AにしC:\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

ビジュアルスタジオの「修理」を使ってみてください。それは私のために働いた。


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 %*

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.