問題タブ [msbuild-task]

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 に答える
5734 参照

tfs - 前回の正常なビルド以降の TFS の変更をプログラムで見つける

TFS にいくつかのブランチ (開発、テスト、ステージ) があり、変更をテスト ブランチにマージするときに、自動化されたビルドおよびデプロイ スクリプトを使用して、更新されたすべての SQL ファイルを検索し、それらをテスト データベースにデプロイします。

前回の適切なビルド以降にビルドに関連付けられたすべての変更セットを見つけ、変更セット内のすべての sql ファイルを見つけて展開することで、これを行うことができると思いました。ただし、何らかの理由で変更セットがビルドに関連付けられていないように見えるため、質問は2つあります。

1) 変更セットが特定のビルドに関連付けられていることを確認するにはどうすればよいですか?

2) 前回の正常なビルド以降にブランチで変更されたファイルのリストを取得するにはどうすればよいですか? 私は最後に正常にビルドされたビルドを持っていますが、変更セットをチェックせずにファイルを取得する方法がわかりません (上記のようにビルドに関連付けられていません!)

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

msbuild - MSBuild コミュニティ タスクの「ファイルが見つかりません」 -- どのファイルですか?

MSBuild コミュニティ タスクの VssGet タスクを使用しようとしていますが、「ファイルまたはプロジェクトが見つかりません」というエラー メッセージが表示されて、私は棒で殴られています。エラーメッセージが特に何を指しているのかわかりません。タスクは次のとおりです。

データベース パスまたはローカル パスのいずれかを読み取るように Streamreader を作成すると、問題なく成功します。したがって、すべてへの道はアクセス可能であるように見えます。何か案は?

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

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

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

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

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

InvalidOperationException をスローします。

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

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

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 に答える
24015 参照

deployment - MSBuild ReadLinesFromFile すべてのテキストを 1 行に

MSBUILD でファイルに対して ReadLinesFromFile を実行し、そのファイルを再度出力すると、すべてのテキストが 1 行に表示されます。すべてのキャリッジ リターンと LineFeeds が取り除かれます。

通常はこのようなファイルからテキストを取得します

こう出てくる

ReadLinesFromFile のコードは、一度に 1 行ずつデータを取得し、キャリッジ リターンを取り除きます。

それらを元に戻す方法はありますか?私の電子メールはすべてき​​れいにフォーマットされているように見えますか?

ありがとう

0 投票する
1 に答える
2701 参照

c# - カスタム ビルド タスクで Project.Build() を実行するときにビルド出力、エラー リストを取得する方法は?

環境:

C# プロジェクト、Visual Studio 2008、C#、.Net 3.5、MSBuild

目的:

C# プロジェクト用に独自のカスタム ビルド タスクを実行し、プラットフォーム (Soln 構成プラットフォーム) に基づいて、ビルド前に Project オブジェクト自体にいくつかの操作を行います。BuildAction を EmbeddedResource に設定するなど。

それが終わったら、私は電話しますProject.Build()。とにかく Project オブジェクトを変更すると、ファイルがダーティ (および TFS からチェックアウト) とマークされるため、GlobalEngine で Project オブジェクトを使用したくありません。

問題:

エンジンとプロジェクトの独自のインスタンスを使用しているため、ビルド出力、エラーを VS に送信できません。からブール値を取得するだけですProject.Build()。アクセスなどを許可できるように接続できるイベントが見つかりませんBuildErrorEventArgsLog.LogErrorEvent()メッセージをVSエラーリストに記録するために使用できることを知っています。しかし、それを行うには、最初にビルド出力自体を取得する必要があります。

コード:

0 投票する
1 に答える
999 参照

msbuild - MSBuild ITaskItem 配列が古くなっています

ビルドの出力ファイルをアップロードする MSBuild 用のカスタム ITask を作成しています。Web 展開プロジェクトを使用してアプリを公開し、AfterBuild ターゲットにフックしてカスタム作業を行っています。

Web アプリケーションにファイルを追加すると、初めてビルドを実行したときに、カスタム タスクが最近追加されたファイルを認識しません。そのファイルを ITaskItems の配列に表示するには、最初に「AfterBuild」ターゲットを削除してビルドを実行し、次に「AfterBuild」ターゲットを配置してビルドを再開する必要があります。

私のビルドファイルは次のようになります。

@(PublishContent) のリストは、ビルド プロセス自体によって行われた可能性のある変更を反映するのではなく、ビルドの開始時に初期化されるようです。

何か案は?

ありがとう

0 投票する
12 に答える
22109 参照

msbuild - MSBuild で Wix DefineConstants プロパティに複数の値を渡す

現在、Wix プロジェクトを MSBuild に統合しています。複数の値を Wix プロジェクトに渡す必要があります。1 つの値が機能します (以下のサンプルの ProductVersion)。

ただし、DefineConstants キーに複数の値を渡すにはどうすればよいでしょうか。すべての「論理」セパレーター (スペース、コンマ、セミコロン、パイプ記号) を試しましたが、うまくいきません。

他の誰かがこの問題に遭遇しましたか?

うまくいかない解決策:

  1. DefineConstants 要素を追加しようとしても機能しません。これは、DefineConstants を Properties 属性内で表現する必要があるためです。
0 投票する
3 に答える
1769 参照

msbuild - MSBuildを使用してさまざまなフレームワークをターゲットにすると、依存関係に問題が発生します

私には小さなプロジェクトがあり、そのプロジェクトの2つのコンパイル済みバージョンが必要です。

  • .NET2.0フレームワークを対象としているもの
  • .NET3.5フレームワークを対象としているもの

すべてが順調に進んでいます。プロジェクトを継続的インテグレーション(CC.NETを使用)し、2つのCC.NET「プロジェクト」を作成しました。ターゲットフレームワークごとに1つのプロジェクト。

(無関係な)詳細についてはあまり詳しく説明しませんが、私のソリューションは、VS.NETの.NET3.5フレームワークをターゲットにするように設定されています。

私は2つのmsbuild-tasksを持っています:

  • .NET 3.5のソリューションを構築する1つのタスク(シンプルで簡単)
  • .NET2.0のソリューションを構築する1つのタスク

    このタスクでは、MSBuildを呼び出し、TargetFrameworkVersionをv2.0にするように指定します。また、いくつかの追加のビルド条件を定義します(.NET3.5固有のコードが.NET2.0を対象とするアセンブリにビルドされないようにするため)。

ここまでは順調ですね。すべてが正常に動作します。しかし今、問題はこれです:

私のソリューションにはいくつかの依存関係があります(サードパーティのアセンブリへの参照)。VS.NETでは、これらの依存関係に対して「ローカルコピー」をtrueに設定しました。CC.NETがアセンブリの.NET3.5バージョンをビルドすると、サードパーティの依存関係が実際に出力ディレクトリにコピーされます。

ただし、CC.NETがアセンブリの.NET2.0バージョンをビルドするとき、依存関係は出力ディレクトリにコピーされません。(その後、これによりユニットテストが失敗します)。

私の質問は次のとおりです。プロジェクトの.NET2.0バージョンをビルドするときに、特定のサードパーティ参照をローカルにコピーする必要があることをmsbuildにどのように伝えることができますか?または、これを実現する他の方法はありますか。ビルドスクリプトですべての依存関係をもう一度指定したくないからです。これはすぐにメンテナンスの悪夢になると思います。

0 投票する
1 に答える
1185 参照

.net - MSBuild でタスクを再帰的に呼び出すにはどうすればよいですか?

たとえば、毎回 diff パラメータを渡すこれらのスクリプトを呼び出したいとします。