ビルドサーバーでVisualStudioを使用せずにASP.NET4.5をビルドする


81

ビルドサーバーをセットアップしてからしばらく経ちましたので、何かを忘れたか、.NET 4.5が前回これを行ったバージョンと異なる可能性がありますが、ここに問題があります。

ソース管理リポジトリを監視するようにビルドサーバーをセットアップしようとしています。何かが変更されたときはいつでも、サーバーに変更をプルしてプロジェクトをビルドしてもらいたいです。エラーがない場合は、ビルドサーバーで実行されているWebサイトにサイトを展開します。

以前、これを行ったとき、.NETのみをインストールすればこれを実行できると思っていましたが、このプロジェクトをビルドしようとすると、「C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v11」というエラーが表示されます。 .0 \ WebApplications \ Microsoft.WebApplication.targets "がありません。行ってみると、見つからないことがわかります。実際、Visual Studio11のターゲットファイルはありません。

よく考えて頭を悩ませた後、外に出て「Windows 8 / .NET 4.5 SDK」を入手し、.NET 4.5 SDKが必要なターゲットファイルをインストールする可能性があると考えましたが、間違ってインストールしない限りインストールされませんでした。 。

したがって、プロジェクトをビルドするには、ビルドサーバーに何を配置する必要がありますか。Visual Studio2012全体をインストールする必要はありません。


これを投稿して以来、私はいくつかの調査を行っています。間違った方向に進んでいる場合はお知らせください。これはVisualStudio 2010でも問題だったようで、人々はこれをいくつかの方法で解決したようです。1つは、Visual Studio TeamExplorerをインストールすることでした。私はそれを試しましたが、私のサーバーはWin 2008 r1であり、VSTE2012は互換性がありません。少し怖いもう1つの解決策は、別のマシンからターゲットファイルをコピーすることです。それは私をさらに前進させました、しかし今私は私の参照アセンブリが欠落しているというエラーを受け取ります、それは私が推測している元の問題に関連しています。別の方法はありますか?
ザック

3
あなたは正しい方向に進んでいます。問題を解決する簡単な方法は、ビルドサーバーにVS2010をインストールすることです。しかし、それは少し鈍器です。2番目の方法は、実行していることを実行し、別のマシンからターゲットと関連する依存関係を取得して、それらのファイルだけをサーバーにデプロイすることです。このアプローチの危険性は、VSサービスパックがコピーしたファイルを変更する可能性があり、開発者が更新されたバージョンを使用している間、ビルドサーバーがそれらのターゲットの古いバージョンを使用することです。
ジェームズリード

VS2012のことですか?ええ。確認しますが、チームエクスプローラー2012はそうではなかったので、win server 2008 r1とは比較できないと思いますが、再確認してください。
ザック

1
申し訳ありませんが、2012ビットを見逃しました。クライアント側のwin 7でのみ機能するため、サーバー2008r2にのみインストールされると思います。ビルドサーバーのOSを更新することは問題外だと思いますか?
ジェームズリード

ええ、私はサーバーのOSを更新することを考えていました。調べてみますが、許可されるかどうかはわかりません。
ザック

回答:


35

私の問題は、Windows8用のWindowsソフトウェア開発キット(SDK)をWindows 2008Boxにインストールすることに関連していました。このページをさらに読むと、「WindowsVistaおよびWindowsServer2008上の.NETFramework 4.5SDKツール」というラベルの付いた見出しが表示されます。これにより、次のことがわかります。

  1. サポートされているオペレーティングシステム(Windows7やWindows8など)でWindows SDK for Windows8インストーラーを実行します。
  2. [場所の指定]画面で次のオプションを選択します。別のコンピューターにインストールするためにWindowsSDKをダウンロードします。
  3. [次へ]ボタンを押します。
  4. [カスタマーエクスペリエンス向上プログラム(CEIP)に参加する]画面の質問に答えます。
  5. 次の画面で、.NET Framework4.5ソフトウェア開発キット機能を選択します。選択を解除できる他のすべての機能の選択を解除します。
  6. ダウンロードボタンを選択します。
  7. ダウンロード場所(手順2で指定)に移動し、次の.NET Framework 4.5 SDKツールインストーラーファイルを見つけます:sdk_tools4.msi、sdk_tools4.cab
  8. これらのファイルは、組織内のWindowsVistaまたはWindows2008Serverコンピューターにコピーできます。これらのファイルは、WindowsVistaまたはWindows2008Serverコンピューターの同じディレクトリにコピーする必要があります。注:これらのファイルを組織外または他のインストーラーの一部として再配布しないでください。
  9. WindowsVistaまたはWindows2008 Serverコンピューターでは、ここでライセンス条項を確認してください。
  10. .NET Framework4.5が既にコンピューターにインストールされているかどうかを確認します。それ以外の場合は、www.microsoft.comから.NET Framework4.5をダウンロードしてインストールします。
  11. 管理者権限でコマンドプロンプトを開きます。
  12. .NET Framework 4.5 SDKToolsインストーラーファイルがコピーされたディレクトリに移動します。
  13. コマンドラインを使用して.NETFramework 4.5SDKツールをインストールします。Msiexec/ i sdk_tools4.msi VSEXTUI = 1

Swampyに感謝します。この答えを正解としてマークしますが、いくつか言及したいと思います。これをテストするつもりはありませんが、あなたの答えはうまくいくように見えます。代わりに、サーバーをアップグレードするだけです。次に、この方法でパッチやサービスパックがリリースされたときにコンポーネントを更新できるかどうかを知っていますか?
ザック

Server 2008でこれらの手順に従いましたが、残念ながらまだ.nlpファイルが表示されており、mscorlibがWebデプロイを使用したデプロイメントに含まれています
Nathan

1
どうもありがとうございました。Jenkinsを使用していて、.NET4.5を使用するようにプロジェクトを更新しました。自分の作業をJenkinsにプッシュすると、バージョンが間違っていると文句を言わず、System.Runtimeアセンブリが欠落していると文句を言います。このソリューションは自動化が簡単なので、ファイルの手動コピーよりもこのソリューションの方が好きです。
イドは蘭

私はWindowsServer 2012を使用しており、Windows 8(開発マシン)にVS2012があります。MsBuild "C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \のターゲットが必要なのは私だけです。SDKにはさらに多くのものが含まれていますね?
Kiquenet 2014年

84

Visual Studioを使用せずにCIサーバーで実行するには、開発マシンからCIサーバー上の同じ場所にいくつかのフォルダーをコピーするだけで済みます。SDKをインストールする必要はありません。

VS 2015:

  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web
  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications

VS 2013:

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

VS 2012:

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

VS 2010:

  • C:\ Program Files(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 Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5.2:

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

.NET 4.5.1:

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

.NET 4.5:

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

.NET 4.0.1:

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

.NET 4.0:

  • C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0

または、Mattが提案したように、それらをプロジェクトのサブディレクトリにコピーして、<MSBuildExtensionsPath32>MSBuild(通常.csprojまたは.vbproj)ファイル内の場所を変更することもできます。

これを実行すると、プロジェクトがコンパイルされます。

また、VisualStudioVersion環境変数を使用しているVisual Studioバージョン(VS2010の場合は10.0、VS2012の場合は11.0、VS2013の場合は12.0、VS2015の場合は14.0)に明示的に設定して、構成で正しく設定されていることを確認する必要があります。


6
これは私たち+1の問題を解決しました。maven / javaから来て、これはナッツです。
ニムチンパンスキー2014

.NET Frameworkがインストールされていない参照アセンブリ?MSBuildはターゲットではありません。参照アセンブリはわかりませんが、そうだと思います。
kiquenet 2014年

TeamCityが.NET4.5ソリューションをコンパイルできなかった後、C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0を開発者マシンからビルドマシンの同じフォルダーにコピーすると、トリックが実行されましたが、.NET 4.0以前のソリューションはコンパイルされました。
Tore Aurstad 2016年

参照アセンブリの場合は+1。TeamcityとMSBuild14を使用して4.5.1プロジェクトをビルドしていますが、ビルドエージェントマシンにリンクがありませんでした。
N.ウォーフィールド

これは愚かな問題ですが、簡単な解決策です。
cori 2016

25

msdnから:

Windows SDKには、完全なコマンドラインビルド環境が付属していません。コンパイラとビルド環境を別々にインストールする必要があります。コンパイラとビルド環境を含む完全な開発環境が必要な場合は、WindowsSDKの適切なコンポーネントを含むVisualStudio 2012Expressをダウンロードできます。

これを修正するにはC:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5、開発マシン(ちなみにVisual Studio 2012があります)からビルドエージェントにフォルダーをコピーする必要がありました。この操作の後、Team Cityはそれ以上エラーを報告せず、mscorlib.dllはbinフォルダーに出力されませんでした。


おかげで、これは私のためにそれを修正しました、sdkをダウンロードする必要はありません。(または受け入れられた回答のいずれかのステップ)
コーエン

素晴らしい、私の一日を救った!
マグナス

1
これは間違いなく受け入れられた答えでなければなりません。refアセンブリを備えたマシンがすでにあるので、はるかに簡単です。
Josh Kodroff 2013年

1
@artfulhacker VS2012とWin8 SDKは、どちらもWin2k8R1にインストールされません。私のようにR1を使用している場合は、refアセンブリをコピーする必要があります。
Josh Kodroff 2013年

1
ただし、このディレクトリにはmsbuild.exeのコピーはありません。VS2012を開発用PC(ビルドマシンではない)にインストールしましたが、4.5バージョンが表示されません。
ashes999 2013年

12

この場合、ダウンロードページで説明されているように、Microsoft Build Tools2013が役立ちます。

コンピューターにVisualStudioがインストールされていない場合は、Build Tools2013を使用して管理対象アプリケーションをビルドできます。Visual BasicおよびC#コンパイラもこのダウンロードに含まれています。(以前のバージョンでは、これらのツールはスタンドアロンの.NET Frameworkに含まれていました。)


1
もう少し説明すると、仲間のプログラマーが参照リンクがどのように機能するかを理解するのに役立つかもしれません。将来的には、参照リンクはもう存在しないかもしれません。
nJInamdar 2014年

Microsoft Build Tools 2013 for VS2013およびVS2012?とにかく、Microsoft BuildToolsまたはVisualStudio Agents 2012 stackoverflow.com/a/20373256/206730をインストールする方がよいでしょうか?
kiquenet 2014年

8

私の部門。Win7ビルドマシンにインストールされているものに最小限のアプローチを取るのが好きです。ただし、レジストリキーの問題が発生する可能性があるため、ファイル/フォルダをコピーして貼り付けるだけでは不十分です。VS 2013をインストールする代わりに、次のはるかに小さく無料のコンポーネントをインストールしました。これで、開発チームはVS 2013Webアプリを正常に構築できます。


どうもありがとうございます。私はいつもどうやって手に入れるのかと思っていましたがMicrosoft.WebApplication.targets、その孤立したシェルについては知りませんでした!
ウィリアムグロス

6

VisualStudioエージェントでこの問題を解決します。

Visual Studio Agents2012のインストールを試すことができます。

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


VS2013では機能しません。エージェントとコントローラーをインストールしましたが、C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0が作成されませんでした
ギヨーム

1
もちろん、Visual Studio2013のエージェントも利用できます。VS2012ではなくVS2013を念頭に置いてこの回答を読んでいる人のために。
j0e3gan 2014

2
それは確かに機能します!Visual Studio 2013 Shell(Isolated)(x86)をインストールする必要があります
。VisualStudio2013Shell

@Andrii Visual Studio Agents 2012をインストールする必要がありますか?または、VSエージェントをインストールせずにVisual Studio 2012および2013シェル(分離)(x86)およびVisual Studio 2012および2013シェル(統合)(x86)のみですか?
Kiquenet 2014年

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