問題タブ [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.
c# - 「ローカルにコピー」とプロジェクト参照のベスト プラクティスは何ですか?
大規模な C# ソリューション ファイル (~100 プロジェクト) があり、ビルド時間を改善しようとしています。「ローカルにコピー」は弊社にとって無駄な場合が多いと思いますが、ベストプラクティスについて疑問に思っています。
私たちの .sln には、アセンブリ C に依存するアセンブリ B に依存するアプリケーション A があります。これらはすべて .sln に含まれているため、プロジェクト参照を使用しています。現在、すべてのアセンブリは $(SolutionDir)/Debug (または Release) にビルドされています。
既定では、Visual Studio はこれらのプロジェクト参照を "ローカルにコピー" としてマークします。これにより、ビルドされる "B" ごとに、すべての "C" が $(SolutionDir)/Debug に 1 回コピーされます。これは無駄に思えます。「ローカルにコピー」をオフにすると、何が問題になる可能性がありますか? 大規模なシステムを持つ他の人々は何をしますか?
ファローアップ:
多くの回答は、ビルドをより小さな .sln ファイルに分割することを提案しています...上記の例では、最初に基本クラス「C」をビルドし、次にモジュール「B」の大部分をビルドし、次にいくつかのアプリケーションをビルドします。あ」。このモデルでは、B から C への非プロジェクト参照が必要です。そこで遭遇する問題は、"Debug" または "Release" がヒント パスに焼き付けられてしまい、"B" のリリース ビルドを構築してしまうことです。 「C」のデバッグビルドに対して。
ビルドアップを複数の .sln ファイルに分割する場合、この問題をどのように管理しますか?
.net - 同じソリューションのカスタム MSBuild タスクを使用しますか?
私は MSBuild が初めてで、少し試してみたいと思っていましたが、なぜこれが機能しないのかわかりません。
したがって、私のソリューションには「Model」と「BuildTasks」の 2 つのプロジェクトがあります。BuildTasks には 1 つのクラスしかありません。
そして、Model.csproj にこれを追加しました。
「BuildTasks」が「Model」の前にビルドされるように、ビルド順序を設定しました。しかし、モデルを構築しようとすると、次のエラーが発生します。
"BuildTasks.Test" タスクをアセンブリ C:\WIP\TestSolution\src\BuildTasks\bin\BuildTasks.dll から読み込めませんでした。ファイルまたはアセンブリ 'file:///C:\WIP\TestSolution\src\BuildTasks\bin\BuildTasks.dll' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。<UsingTask> 宣言が正しいこと、およびアセンブリとそのすべての依存関係が利用可能であることを確認してください。
このファイルは確かに存在するのに、なぜ MSBuild はそれを見つけられないのでしょうか?
「$(SolutionDir)」の代わりに「C:\WIP\TestSolution」をハードコーディングしようとしても、同じエラーが発生します。ただし、その .dll をデスクトップにコピーし、デスクトップへのパスをハードコーディングすると、動作しますが、理由がわかりません。
編集:パスが間違っていません。BuildTasks のデバッグ/リリース ビルドを変更して、.dll を bin フォルダーだけに出力するようにしました。これは、デバッグ/リリースに異なるパスを持たせたくないためです。
.net - MSBuild を使用して Web サービスを公開する
MSBuild を使用して Web サービスをサーバーに公開するにはどうすればよいですか?
visual-studio - MSBuild - ソリューション ファイルでプロジェクトの依存関係を解決できますか? もしそうなら、どのように?
すべてのプロジェクト (約 70 以上のプロジェクト) を保持する Visual Studio から SLN ファイルをビルドする msbuild プロジェクトがあり、多くのプロジェクトが相互に依存しているため、順番にビルドする必要があります。開発者が忘れることがあります。 Visual Studio でソリューション ファイルのビルド順序を手動で設定すると、クリーンなソリューションで msbuild が失敗し、何かが順不同でビルドされたり、DLL が見つからなかったりします。
msbuild がすべてのプロジェクトを取得して依存関係を解決し、プロジェクトを順番にビルドする方法はありますか? MSBuild タスクを使用していますか? 現在の試行では、プロジェクトを読み取る順序でビルドするように見えます-プロジェクトファイル+パスのリストを渡すと。
現在、これを解決するために考えられる唯一の方法は、proj ファイルと参照をスキャンし、毎回手動でソリューションを作成する外部アプリです..しかし、これはそのような単純なことにはやり過ぎのようです。
誰かがこれを以前に解決/見ましたか?
msbuild - msbuild: ビルド プロジェクトで Microsoft.VisualBasic.Targets が msbuild によって「インポート」されるのはいつですか?
私の状況は次のとおりです。.NET フレームワークのインストール パスにあるビルド ファイルを見て、msbuild がどのように機能するかを理解しようとしています。
msbuild は Microsoft.Common.Targets で始まり、将来のある時点で msbuild が私の vb プロジェクト ファイル拡張子 (.vbproj) を「見て」、「Microsoft.VisualBasic.targets」をロードすると想定しています。
2 つの質問:
1) 私の解釈は正しいですか?
2) これが .vbproj ファイルであると判断し、それに応じて 'Microsoft.VisualBasic.targets' をロードするコードはどこにあるのか説明してもらえますか? コードはどこかのアセンブリにロックされていますか、それとも上記のビルド ファイルに表示されていますか?
c# - MSBuild 条件付きコンパイル
フレームワークの残りの部分がそのデータを取得するために依存する Web サービス クラスがありますが、Web サービス クラスには、その環境に応じて異なるメソッド属性が必要です。たとえば...
「 https://example」を参照してください。環境に応じて変更する必要があります。私の知る限り、実行時にその文字列を動的にすることはできません。そのようにコンパイルする必要があります。そのため、この Web サービス用に複数の CS ファイルがあり、それらに異なる属性 URL がハードコーディングされ、MSBuild がプリコンパイル時にそれらを交換するようにしようとしています。したがって、テスト用のベース "Service.cs"、運用環境用の "Service.cs.production" などがあります。
- これはこれを行うための最良の方法ですか、それとも環境を独自に処理する 1 つの CS を持つことができる何かが欠けていますか?
- 同じクラス名を保持し、IntelliSense があいまいであると考えないようにするために、ファイル拡張子 ("Service.cs" と "Service.cs.production") をいじっています。それが唯一の方法ですか?
- 上記のすべてが問題ないことを考慮し、「Production」構成に対してコンパイルしています.Service.csの代わりにService.cs.productionをコンパイルすると、すべてがうまくいきますか?
ありがとう!
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()
。アクセスなどを許可できるように接続できるイベントが見つかりませんBuildErrorEventArgs
。Log.LogErrorEvent()
メッセージをVSエラーリストに記録するために使用できることを知っています。しかし、それを行うには、最初にビルド出力自体を取得する必要があります。
コード:
visual-studio - チームビルドが痛々しいほど遅い
Team Foundation Build Server の実装でパフォーマンスの問題が発生しており、速度を上げる方法についてのアイデアが不足しています。いくつかのステップ (SkipClean、SkipLabel、SkipInitializeWorkspace) でパフォーマンスを向上させるために、いくつかの PropertyGroup 要素を既に追加しましたが、問題を修正するには大幅な再構築が必要だと思います。セットアップは次のとおりです。
- それぞれが大きく異なる約 40 の Web アプリケーションがありますが、多数の共有アセンブリから実行されます。
- これらの Web アプリケーションにはそれぞれ独自のソリューションがあります。
- これらの Web アプリケーションごとに、約 10 ~ 25 個の共有アセンブリが参照されます。
- トランクへのチェックインごとに起動されるすべてのソリューションを含むビルド定義が存在します。
そして、これが私たちが直面している基本的な問題です
- ビルド中に、一度ビルドしてアプリごとに使用するのではなく、参照された回数だけ各共有アセンブリをビルドします。
- ドロップ ディレクトリのファイル コピー時間は非常に遅いです。ネットワーク共有を介する必要があり、ローカル パスを使用しません。
- 非常に多くのビルドごとに、1 つ以上の出力ファイルが「ロック」され、コンパイルが正常であってもビルドが中断されます。
- 別のビルド定義も試しましたが、そうすると、Get Latest バージョンで別のワークスペースを強制的に取得することになります。ビルド サーバーには、ビルドするトランクの 1 つのバージョンが含まれている方がよいでしょう。
過去数か月間、無気力に屈してこの問題を無視してきましたが、現在、ビルド時間は 1 時間から 1 時間半を超えています。
私はクルーズコントロールを学び、より優れたコントロールのためにクルーズコントロールに切り替えるという考えをいじっています. それに同意しない人はいますか?
どんな助けでも大歓迎です。ありがとう!
maven-2 - TFS (または MS ランド) の Maven に相当するツールはどれですか?
私の会社は、svn (およびオープン ソース製品) から TFS (および MS 製品) に移行しています。過去にビルド済みのコンポーネントをリリース可能なパッケージにパッケージ化するために maven を使用しました。TFSまたはMS-Landにこれを行うためのmavenと同じくらい強力なツールはありますか?
msbuild を見てきましたが、Maven よりも堅牢性が少し劣るようです。
msbuild - MSbuild で Web サイトを自動的にプリコンパイルする際の問題
全て、
私は現在、2 つのクラス ライブラリと、Msbuild を使用して teamCity 内に構築されている Web サイトで構成されるソリューションを持っています。ここで、Web サイトをプリコンパイルして、アーティファクトとして利用できるようにしたいと考えています。ただし、使用してプリコンパイルしようとすると
仮想パスを探しているため、エラーが発生します(サイトの公開に興味がないファイルをプリコンパイルしたいだけなので、持っていません)ダミーパスを入力すると、別のエラーが発生します(正しく)IIS の下のアプリケーションではないことについて
何か案は