問題タブ [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 投票する
6 に答える
2679 参照

delphi - プロジェクト間で Delphi ソース ファイルを共有する最良の方法は何ですか?

プロジェクト間で Delphi ソース ファイルを共有する最良の方法は何ですか?

明確化: 複数の Delphi プロジェクトで単一のソース ファイルを使用したいと考えています。SCM ツールを使用して同じファイルを複数のフォルダーに配置してきましたが、これは非常にエレガントなエクスペリエンスではなく、これをサポートしていないツールへの移行も検討しています。

この質問を調査してきたので、いくつかの異なるアプローチを検討しましたが、あなたが何をしているのか、どのようにアプローチを見つけているのか知りたいです.

重要なシナリオ:

  • コードタイム
    • 新しい共有依存関係を追加するには、共有が管理されるように、明示的な宣言が必要です。
    • 新しい共有依存関係の追加は比較的簡単です。複雑なプロセスは必要ありません。
      • プロジェクトの「インポートされた」ファイル (外部から) のすべてをリストする 1 つのファイルがよいでしょう。
  • コンパイル時
    • すべてのプロジェクトは、常に 1 つの現在のバージョン (ソースの同期状態とローカル編集の時点で最新) でビルドする必要があります。
      • (異なる場所で異なるバージョンを維持するには、ここではトピックではないファイル ブランチを使用する必要があります。)
    • 各プロジェクトが、異なるコンパイラ設定 (フラグを含む) で共有ファイルのコンパイルに影響を与えることができるかどうかは、議論の余地があります。
      • 常に一貫してビルドされているソース コードを維持する (つまり、長期的に) ことは間違いなく簡単です。
      • 変更の範囲を 1 つのプロジェクトに簡単に制限できる場合は、メンテナンス修正 (つまり、短期) を行う方がおそらく簡単です。
  • デバッグ時間
    • ルーチンにステップインするか、ブレークポイントを設定すると、正しいバージョンのソースが自動的に開きます。
    • 表示されたソースを編集すると、次のビルドに影響するはずです。
      • ソースの一時的なコピーに対してデバッグしたくありません。混乱の中でコードを失う可能性があります。

考慮事項:

  • 短期:
    • 最も簡単に導入できるアプローチはどれですか?
  • 長期:
    • 使用と保守が最も簡単なアプローチはどれですか?

フィードバックをお寄せいただきありがとうございます。

マティアス


- - アップデート - -

回答、コメント、投票を通じて、フィードバックをお寄せいただきありがとうございます。

私は、共有ファイルを 1 つの「生産者」プロジェクトに入れ、コンパイルされたファイルのリストを各「消費者」プロジェクトにインポートするという道を歩み始めました。プロジェクトは MSBuild と一緒にリンクされています。物事がより明確になったら、この質問と「ライブラリ プロジェクト」の回答を編集して、学んだことを共有します。

乞うご期待!(でも息を止めないでください。数分以内に窒息してしまいます! :P )

0 投票する
5 に答える
4343 参照

visual-studio - Visual Studio - リリース モードで参照を削除する方法

私は他のアプリで使用するライブラリを開発しています。このライブラリには、NLog のおかげで多くのデバッグ ステートメントとログ ステートメントが含まれています。

リリース モードに切り替えるときに、NLog.dll への参照を除外することはできますか?

乾杯、

0 投票する
6 に答える
7403 参照

c# - 「タスクが初期化される前にログに記録しようとしました」エラーのない単体テスト MSBuild カスタム タスク

うまく機能し、CruiseControl.NET ビルド プロセスで使用される MSBuild カスタム タスクをいくつか作成しました。

私は 1 つを変更しており、タスクの Execute() メソッドを呼び出して単体テストを行いたいと考えています。

ただし、次を含む行に遭遇した場合

InvalidOperationException をスローします。

タスクは、初期化される前にログに記録しようとしました。メッセージは...

助言がありますか?(過去に、このような問題を回避するために、カスタム タスクで内部静的メソッドのほとんどを単体テストしてきました。)

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

unit-testing - MSBuild を学ぶのに最適なリソースは何ですか?

私は、StackOverflow コミュニティが単体テストと、FxCop や StyleCop などの後の静的コード分析ツールをビルド プロセスに統合することに重点を置いて MSBuildをよりよく学習するために使用した、最良かつ効果的なリソースのあらゆる提案を探しています。

ビルドに単体テストを追加する方法について明確なドキュメントを見つけようとしましたが、まだ検索中です。理想的には、単体テストを追加し、結果を報告し、最終的にコード カバレッジ統計などをビルド結果に追加したいと考えています。

MSDN のどこかになければならないことはわかっていますが、うまく説明して教えてくれるものを見つけることができないようです。Visual Studio Team System 2008 を使用しています。

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

c++ - msbuild の使用時に C++ の「ビルド後のイベント」を抑制する

msbuild を使用して C++ プロジェクトをビルドしていますが、「ビルド後のイベント」を抑制したいと考えています。次のプロパティを試しましたが、成功しませんでした:

どちらも違いはなく、ビルド後のイベントは引き続き実行されます。

msbuild を使用してこれらの (および潜在的に他の) イベントを抑制する方法を知っている人はいますか?

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

msbuild - MSBuild は、別のプロジェクトからの出力を現在のプロジェクトの出力にコピーします

MSBuild コピー タスクでパスをハードコーディングせずに、MSBuild を使用して、1 つのプロジェクトからターゲット アプリケーションの出力ディレクトリに出力アセンブリをコピーしたい状況があります。シナリオは次のとおりです。

  • プロジェクト A - Web アプリケーション プロジェクト
  • プロジェクト B - ダル インターフェイス プロジェクト
  • プロジェクト C - ダル導入プロジェクト

ビジネス層もありますが、私が解決しようとしている MSBuild の問題とは関係ありません。

私のビジネス層には、私の Dal.Interface プロジェクトへの参照があります。私の Web プロジェクトにはビジネス レイヤーへの参照があり、現状では、ビルドを実行すると、ビジネス レイヤーと Dal.Interface プロジェクトが出力に取り込まれます。ここまでは順調ですね。Web アプリを実行するには、Dal の実装が必要です。インターフェイスにコーディングを強制したいので、実装をどこにも参照させたくありません。参照がないということは、インテリセンスなどに表示されないことを意味します。

したがって、MSBuild のコピー操作を AfterBuild タスクとして処理することで、これを処理できると考えました (Web プロジェクトのビルド時にビルドする Dal 実装のセットアップがあり、参照されていません)。MSBuild パラメーターにパスやその他のものをハード コードしたくないので、Web アプリケーション プロジェクトの MSBuild ファイルから Dal プロジェクトの出力を参照する方法を見つけようとしています。

したがって、上記のプロジェクトに基づいて、これが実現することを望んでいます。

  1. Web アプリのビルドが開始されました
  2. 必要なすべてのプロジェクトがビルドされます (既に構成されているため、これは完了しています)
  3. MSBuild の "AfterBuild" タスクが開始され、プロジェクト C (Dal 実装) からの出力がプロジェクト A (Web アプリ) の Bin ディレクトリにコピーされます。

パート3は私が立ち往生しているところです。

私はこれができると確信していますが、私は助けになる良い参考文献を見つけていません。助けてくれてありがとう。

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

.net - MSBuild が期待どおりにコピーしないのはなぜですか

ビルドをスクリプト化する必要があります。VS.net と統合されているため、MSBUILD を使用しています。ビルド環境から配置フォルダーにいくつかのファイルをコピーしようとしています。MSBuild のコピー タスクを使用しています。しかし、期待どおりにディレクトリツリーをコピーする代わりに。すべてのコンテンツを 1 つのフォルダーにコピーします。ディレクトリツリーのすべてのファイルが1つのフォルダーになることを繰り返します。フォルダーとディレクトリのツリーを宛先フォルダーにコピーするために必要です。足りないものはありますか?

私のビルドスクリプトの関連部分は次のとおりです。

0 投票する
9 に答える
23478 参照

c# - Visual Studio で「... を除くすべての警告をエラーとして扱う」

Visual Studio では、「警告をエラーとして扱う」オプションを選択して、警告がある場合にコードがコンパイルされないようにすることができます。私たちのチームはこのオプションを使用していますが、警告として残しておきたい 2 つの警告があります。

警告を抑制するオプションがありますが、警告として表示する必要があるため、機能しません。

必要な動作を取得する唯一の方法は、警告として扱いたい 2 つを除いて、すべての C# 警告番号のリストを [特定の警告] テキスト ボックスに入力することです。

メンテナンスの問題に加えて、このアプローチの最大の欠点は、いくつかの警告に番号がないため、明示的に参照できないことです。たとえば、「この参照を解決できませんでした。アセンブリ 'Data....' が見つかりませんでした」

これを行うためのより良い方法を知っている人はいますか?


これが便利な理由がすぐにわからない人のために説明します。ほとんどの警告がどのように機能するかを考えてみてください。彼らは、あなたが書いたばかりのコードで何かが少しずれていると言います。それらを修正するのに約 10 秒かかります。これにより、コード ベースがきれいに保たれます。

「廃止」の警告は、これとは大きく異なります。それを修正することは、新しいメソッド シグネチャを消費することを意味する場合があります。しかし、クラス全体が廃止され、数十万行のコードに散らばって使用されている場合、修正に数週間またはそれ以上かかる可能性があります。ビルドがそれほど長く壊れることは望ましくありませんが、それに関する警告を表示したいことは間違いありません。これは単なる仮定のケースではありません。これは実際に起こったことです。

リテラルの「#warning」警告もユニークです。チェックインしたいことがよくありますが、ビルドを壊したくありません。

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

c# - C#で条件付き依存関係を処理する最良の方法は何ですか

トラック内のコンピューターで実行される C# .NET アプリを構築しています。開発者のマシンには存在しないトラック コンピューターのデジタル IO ポートと対話する必要があるため、開発ビルドに含まれるダミー ライブラリを作成する必要がありますが、開発時に実際のデジタル IO ライブラリに置き換えられます。リリースを行います。そして、このライブラリの置換をビルド プロセスで自動化したいと考えています。

Java のバックグラウンドを持つ私は、ビルド プロファイルを使用して Maven で簡単にこれを行うことができます。MSbuild を使用してそれを行うことができる同様の方法はありますか?? そうでない場合、C# microsoft land でこれを処理する最良の方法は何ですか。

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

.net - COM オブジェクトの ActiveD または MSXML2 が参照されている場合のビルド警告の多く

プロジェクトを .NET 1.1 から .NET 2.0 に移動した後、MsBuild は一部の COM オブジェクトに対して多くの警告を発します。

テスト用のサンプル コード (実際のコードは重要ではありません。警告を作成するために使用されるだけです):

警告メッセージは次のようになります

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets: 警告: 'ITypeLib.RemoteGetLibAttr' の少なくとも 1 つの引数をランタイム マーシャラーでマーシャリングできません。したがって、このような引数はポインターとして渡され、操作には安全でないコードが必要になる場合があります。

所見:

  • ActiveDs (11 個の警告) および MSXML2 (54 個の警告) で発生します。
  • 独自の COM オブジェクトでは見られません。
  • <Reference>.csproj ファイルのエントリに属性が含まれていますWrapperTool = "tlbimp"
  • すべての警告にもかかわらず、実行中のシステムで問題は観察されていません。

警告を取り除く方法はありますか?