問題タブ [msbuild]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
24897 参照

asp.net - MSBuild を使用して Asp.NET Web アプリケーションを公開するにはどうすればよいですか?

NAnt と MSBuild を使用して、Asp.net MVC Web アプリケーションをローカルで公開しようとしています。これは、NAnt ターゲットに使用しているものです。

そして、私が得るのはこれだけです。

この方法でコマンドラインから Web アプリケーションを公開することはできますか?

0 投票する
4 に答える
49778 参照

msbuild - Mono のコマンド ラインから MSBuild ファイル (visual studio sln) をビルドすることは可能ですか?

MonoDevelop を起動せずに Visual Studio ソリューションを構築することは可能ですか?

0 投票する
4 に答える
1875 参照

version-control - ビルド バージョンを管理するための最適なビルド プロセス ソリューション

いくつかの独立したアプリケーションを使用して、かなり複雑なプロジェクトを実行しています。ただし、これらはいくつかの共有コンポーネントを使用します。だから私は以下のようなソースツリーを持っています。

  • 私のプロジェクト
    • アプリケーションA
    • 共有1
    • 共有2
    • アプリケーションB
    • アプリケーション C

すべてのアプリケーションには、プロジェクトと必要なすべての共有リソースをビルドする独自の MSBuild スクリプトがあります。これらのビルドは、CruiseControl 制御の継続的インテグレーション ビルド サーバーでも実行します。

アプリケーションがデプロイされると、複数のサーバーにデプロイされて負荷が分散されます。これは、異なるサーバーのそれぞれにどのビルド/リビジョンが展開されているかを追跡することが非常に重要であることを意味します (「1.0.0.68」など、DLL バージョンに現在のバージョンが必要です)。

何かが意図したとおりに機能しなかった場合にロールバックできるようにビルドされたリビジョン/ビルドを再作成できることも同様に重要です (そうです、それは起こります...)。現在、ソース管理に SourceSafe を使用していますが、その正当な理由を示すことができれば、変更することも可能です (SS 現在のところ、実際には問題なく動作してます)。

私たちが従おうとしているもう 1 つの原則は、さらに展開する統合サーバーによってビルドおよびテストされたコードのみであるということです。

「CrusieControl ビルド ラベル」ソリューション

上記を解決するためにいくつかのアイデアがありました。1 つ目は、継続的インテグレーション サーバーでプロジェクトをビルドし、ローカルにデプロイしてテストすることでした (現在はそれを実行しています)。おそらく知っているように、CruiseControl でビルドが成功するとビルド ラベルが生成されます。これを使用して、実行可能ファイルの DLL バージョンを設定できると思います (つまり、ビルド ラベル 35 は「1.0.0.35」のような DLL を作成します)。このビルド ラベルを使用して、完全なソース ツリーにラベルを付けるというアイデアもありました。その後、おそらくそのラベルでチェックアウトし、後でビルドを再作成できます。

完全なツリーにラベルを付ける理由は、実際のアプリケーション コード (ソース ツリーの 1 か所にある) だけでなく、すべての共有アイテム (ツリーの別の場所にある) も含めるためです。したがって、「アプリケーション A」のビルドが成功すると、ツリー全体にラベル「ApplicationA35」などのラベルが付けられます。

ただし、CruiseControl で生成されたビルド ラベルにアクセスできなくなるため、デプロイ前にこのビルドを再作成して DLL バージョンを設定すると、問題が発生する可能性があります。すべての CrusieControl ビルド ラベルがすべてのプロジェクトで一意である場合、ラベル付けに番号のみを使用できますが、そうではありません (アプリケーション A と B の両方が同時にビルド 35 である可能性があります)。ラベル。したがって、SourceSafe ラベルは「Application35」です。ビルド 35 をビルドしたら、ビルド 34 を再作成し、1.0.0.34 を DLL バージョン番号に設定するにはどうすればよいですか?

「改訂番号」ソリューション

たとえば、Subversion はチェックインのたびにソース ツリー全体のリビジョン番号を作成すると誰かが私に言いましたが、これは本当ですか? SourceSafe に似たようなものはありますか? これが正しければ、最新版を取得して CruiseControl サーバー上でビルドするときにそのリビジョン番号を取得するという考え方です。リビジョン番号は、DLL のバージョン番号 (たとえば、「1.0.0.5678」) を設定するために使用できます。その後、必要に応じて Subversion のこの特定のリビジョンを取得し、そのアプリケーションとすべての共有アイテムを含めて、過去の特定のバージョンを再作成できると思います。それは機能し、これも SourceSafe を使用して実現できますか?

要約する

したがって、主な要件は次の 2 つです。

  1. ビルドおよび展開された DLL のビルド/リビジョン番号を追跡できます。
  2. 過去のリビジョン/ビルドを再構築し、そのビルドの実行可能ファイルに古いビルド/リビジョン番号を設定できるようにします (要件 1 に準拠するため)。

では、これをどのように解決しますか?あなたの好みのアプローチは何ですか? また、それをどのように解決しますか? (または、まったく異なるアイデアをお持ちですか?) **詳細な回答をお願いします。**

おまけの質問リビジョン番号とビルド番号の違いは何ですか? また、両方が本当に必要になるのはいつですか?

0 投票する
4 に答える
12756 参照

.net - 内の .svn ディレクトリとファイルを除く、MSBuild ItemGroup

MSBuild ItemGroup を構築して、.svn ディレクトリとその中のすべてのファイルを (再帰的に) 除外するにはどうすればよいですか? 私が持っている:

現時点では、これは何も除外しません!

0 投票する
2 に答える
535 参照

visual-studio - ユーザーごとに異なる一連の MSBuild タスクを実行していますか?

私たちの開発環境では、各開発者が独自の開発サーバーを持っています。多くの場合、実際にそのサーバーで開発するのではなく、ローカル マシンから開発し、開発サーバーにデプロイしてから、リモート デバッガーにアタッチしてデバッグを行います。

私の質問は; MSBuild を使用して、ユーザーごとに異なる一連のタスクを実行するにはどうすればよいですか?

各ユーザーが MSBuild タスクを使用して独自のビルド プロセスを定義できるようにしたいのですが、それが他の開発者に必ずしも影響することは望んでいません。また、特定のユーザーが独自のプロセスを明示的に定義した場合に、デフォルトの一連のタスクを実行することも必要です。

例:

  • SomeProj.csproj
    • デフォルトの MS Build プロセスは、テスト サーバーまたはステージング サーバーにコピーすることです。
    • スティーブのカスタム プロセスは、スティーブの開発サーバーにコピーすることです
    • Eric のカスタム プロセスは、Eric の開発サーバーにコピーすることです。
0 投票する
4 に答える
6764 参照

visual-studio - 適切な PowerShell MSBuild タスクはありますか?

PowerShell スクリプトを実行してさまざまなパラメーターを渡す優れた MSBuild タスクを知っている人はいますか?

B# .NET ブログ: Invoking PowerShell scripts from MSBuildを見つけることができましたが、もう少し洗練されたものを期待しています。

何も見つからない場合は、もちろん先に進み、そのブログ投稿をスターターとして使用して自分自身を磨きます.

0 投票する
13 に答える
83965 参照

visual-studio - Visual Studioでビルド時間を表示しますか?

ビルドサーバーは、C++プロジェクトの1つをビルドするのに時間がかかりすぎています。Visual Studio 2008を使用します。ソリューション内の各プロジェクトのビルドにかかった時間をdevenv.comに記録させて、どこに注力すべきかを知る方法はありますか?

この場合、ハードウェアの改善はオプションではありません。

出力の詳細度を設定してみました([ツール]/[オプション]/[プロジェクトとソリューション]/[ビルドと実行]/[MSBuildプロジェクトビルドの出力の詳細度]の下)。これはIDEでは効果がないようです。

コマンドラインからMSBuildを実行すると(Visual Studio 2008の場合はMSBuildv3.5である必要があります)、最後に経過した合計時間が表示されますが、IDEには表示されません。

ソリューション内のプロジェクトごとに時間のかかるレポートが本当に必要だったので、ビルドプロセスに時間がかかっている場所を把握できました。

または、実際にはNAntを使用してビルドプロセスを実行しているため(Jetbrains TeamCityを使用)、NAntに各ステップにかかる時間を教えてもらう方法はありますか?

0 投票する
3 に答える
4290 参照

excel - MSBuild で .xla ファイルを変更する

Excel アドインを含む現在のプロジェクト用のビルド スクリプトを作成しようとしています。アドインには、変数 version_Number を持つファイル modGlobal を含む VBProject が含まれています。この番号は、ビルドごとに変更する必要があります。正確な手順:

  1. XLA ドキュメントを Excel で開きます。
  2. VBEditor モードに切り替えます。(Alt+F11)
  3. パスワードを入力して VBProject を開きます。
  4. modGlobal ファイルを開きます。
  5. 変数のデフォルト値を現在の日付に変更します。
  6. プロジェクトを閉じて保存します。

プロセスを自動化する方法がわかりません。私が思いつく最善の方法は、Excel マクロまたは Auto-IT スクリプトです。カスタムの MSBuild タスクを作成することもできますが、それは難しいかもしれません。他に何か提案はありますか?

0 投票する
3 に答える
4484 参照

tfs - TFSBuild.proj と外部ターゲットのインポート

オーバーライドされたビルド ターゲットを外部ファイルに保存し、そのターゲット ファイルを TFSBuild.proj に含めます。発生するコア セットの手順があり、ウィザードによって作成された TFSBuild.proj にインポート行を追加するだけで、これらの追加の手順を取得したいと考えています。

$(SolutionRoot)Import ステートメントが検証された時点でソースがリポジトリから取得されていないため、 のファイルをインポートすることはできません。TFS がTFSBuild.proj他のファイルなしで最初のファイルをプルダウンしているようです。

条件付きインポートを追加しても、ソース管理のバージョンが存在する場合はインポートされません。ディスクに既に存在する以前のバージョンがインポートされます。

これらのビルド ターゲットをソースに格納することをあきらめることはできますが、ソース ツリーから移動するのは最初の依存関係であるため、実行するのは気が進まないのです。

次のいずれかの方法はありますか:

  1. Importこれらのステートメントが正しく評価されるように、さらにいくつかのファイルをプルダウンするようチーム ビルドに指示しますか?
  2. ?AfterCompile以外の方法で、これらのチーム ビルド ターゲットをオーバーライドします。Import
  3. 最終的に、ビルドしようとしているソースの下に保持されているチーム ビルドでビルド ターゲットを実行しますか?
0 投票する
2 に答える
15116 参照

tfs - MSBuild が Team Foundation Build で使用するビルド ディレクトリを変更するにはどうすればよいですか?

Team Foundation Build を使用してアプリをビルドしようとすると、次のエラーが発生します。

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(1682,9): エラー MSB3554: 出力ファイル "obj\Release\Company.Redacted.BlahBlah.Localization.Subsystems. Startup_Shutdown_Processing.StartupShutdownProcessingMessages.de.resources". 指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は 260 文字未満、ディレクトリ名は 248 文字未満である必要があります。

ソースは 2 フォルダーの深さしかないため、私のプロジェクトは私の開発マシンで正常にビルドされますが、TF ビルドは非常に深いディレクトリを使用しているようで、それが原因で壊れています。使用するフォルダを変更するにはどうすればよいですか?

編集:ソース管理に保存されているビルドの .proj ファイルを確認したところ、次のことがわかりました。

これがデータベースに保存されている場合、どうすれば変更できますか?

編集:次のブログ投稿を見つけて、解決策を示している可能性があります。次に、ビルド エージェントの設定を変更する方法を理解する必要があります。 http://blogs.msdn.com/jpricket/archive/2007/04/30/build-type-builddirectorypath-build-agent-working-directory.aspx

現在、私の作業ディレクトリは「$(Temp)\$(BuildDefinitionPath)」ですが、別のフォルダーを指定するために使用できるワイルドカードがわかりません。