タグ付けされた質問 「msbuild」

Microsoft Build Engine(MSBuildとも呼ばれます)は、マネージコードのビルドプラットフォームであり、.NET Frameworkの一部でした。

30
CodeDomプロバイダータイプ“ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider”が見つかりませんでした
これはVS2015を使用したWebApiプロジェクトです。 再現手順: 空のWebApiプロジェクトを作成する ビルド出力パスを「bin \」から「bin \ Debug \」に変更します 走る ビルド出力パスを「bin \」から「bin \ Debug \」に変更するまで、すべてが完全に機能しています。実際、「bin \」以外の出力パスは機能しません。 もう1つ追加すべきことは、ビルドを「bin \」に残しておけば、どこにでも別の出力パスを設定できることです。 これを解決するためのソリューションの提供を手伝ってください。実際の展開では問題が発生すると思います。

5
'指定された条件「$(PackageAsSingleFile)」は、ブール値ではなく「」に評価されますか?
私のPCのビジュアルスタジオ2012が「パブリックWeb」でプレビューすると、次のエラーメッセージが表示されます。エラーメッセージを取り除くには、VSを再起動する必要があります。 例外「指定された条件 "$(PackageAsSingleFile)"がブール値ではなく ""と評価されるため、ビルドの呼び出しに失敗しました。C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.targets ' エラーの原因は何ですか?

4
MSBuildのプラットフォームを指定するにはどうすればよいですか?
MSBuildを使用して、指定されたターゲットプラットフォームでソリューションをビルドしようとしています(x86とx64の両方のバイナリが必要です)。これは私が試した方法です: C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86" ただし、プラットフォームが「すべてのCPU」と異なる場合、ビルドは常に失敗します。何が悪いのですか? これは、MSBuildが出力するwhile出力です。 C:\ WINDOWS \ Microsoft.NET \ Framework \ v3.5> MsBuild SolutionPath \ Solution.sln / t:Rebuild / p:Configuration = Release / p:Platform = "x86" Microsoft(R)Build Engineバージョン3.5.30729.1 [ Microsoft .NET Framework、バージョン2.0.50727.3082] Copyright(C)Microsoft Corporation 2007。 ビルドは1.7.2010 8:28:10に開始されました。ノード0のプロジェクト「SolutionPath \ Solution.sln」(ターゲットを再構築(s))。SolutionPath \ Solution.sln:エラーMSB4126:指定されたソリューション構成 "Release | x86"は無効です。構成とプラットフォームのプロパティ(例:MSBuild.exe Solution.sln / …
155 msbuild 

18
「ローカルにコピー」のベストプラクティスは何ですか?
大きなc#ソリューションファイル(〜100プロジェクト)があり、ビルド時間を改善しようとしています。「ローカルコピー」は多くの場合無駄であると思いますが、ベストプラクティスについて疑問に思っています。 .slnには、アセンブリBに依存するアプリケーションAがあり、アセンブリBはアセンブリCに依存しています。この場合、数十の「B」と少数の「C」があります。これらはすべて.slnに含まれているため、プロジェクト参照を使用しています。現在、すべてのアセンブリは$(SolutionDir)/ Debug(またはRelease)に組み込まれています。 デフォルトでは、Visual Studioはこれらのプロジェクト参照を「ローカルにコピー」としてマークします。これにより、ビルドされる「B」ごとに「C」がすべて$(SolutionDir)/ Debugにコピーされます。これは無駄に思えます。「ローカルのコピー」をオフにしただけでは何がうまくいかないのですか?大規模なシステムを持つ他の人々は何をしますか? ファローアップ: 多くの応答は、ビルドを小さな.slnファイルに分割することを提案しています...上記の例では、最初に基礎クラス「C」を構築し、次にモジュール「B」の大部分、次にいくつかのアプリケーションを構築します。 A "。このモデルでは、BからCへの非プロジェクト参照が必要です。そこで発生する問題は、「デバッグ」または「リリース」がヒントパスに焼き付けられ、「B」のリリースビルドのビルドに巻き込まれることです。 「C」のデバッグビルドに対して。 ビルドを複数の.slnファイルに分割した場合、この問題をどのように管理しますか?

6
プロジェクトの既定のXML名前空間はMSBuild XML名前空間である必要があります
ASP.NET Core SignalR Repoをローカルに複製し、次の環境からソリューションを開いてみました。 IDE Microsoft Visual Studio Enterprise 2015 Version 14.0.25431.01 Update 3 Microsoft .NET Framework Version 4.6.01055 DOT NET CLI λ dotnet --info .NET Command Line Tools (1.0.0-preview2-1-003177) Product Information: Version: 1.0.0-preview2-1-003177 Commit SHA-1 hash: a2df9c2576 Runtime Environment: OS Name: Windows OS Version: 6.1.7601 OS Platform: Windows RID: …

15
ソリューションからnugetパッケージの復元を削除する
'Enable NuGet Package Restore'を使用して、最近のnugetパッケージの復元機能をソリューションに追加しました:http ://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages ただし、ビルドサーバーが破損し、修正する時間がなかったため、削除しました。私の知る限り、そのためのオプションはないので、すべての* .csprojファイルから次の行を手動で削除しました。 <Import Project="$(SolutionDir)\.nuget\nuget.targets" /> ここでの問題は、*。csprojファイルがチェックアウトされるか、ソリューションを開くたびに、行が自動的に再度追加され、誤ってチェックインするとビルドが壊れてしまうことです:( どのように私はそれを永久に削除することができますか? 更新:以下の答えにもかかわらず、ソリューションを開くと、同じ問題を抱えている人はまだ戻ってきますか?

7
Windows SDK 7.1を使用してコマンドラインからmsbuildを実行するにはどうすればよいですか?
CIサーバーで.NET 4.0サポートをセットアップしています。.NET 4.0とWindows 7.1 SDKの.NETツールをインストールしました。 .NET 2.0と3.5では、それでうまくいきました。.NET 4で、スタートメニューから「Windows SDK 7.1コマンドプロンプト」を実行すると、 The x86 compilers are not currently installed. x86-x86 Please go to Add/Remove Programs to update your installation. . Setting SDK environment relative to C:\Program Files\Microsoft SDKs\Windows\v7.1 \. Targeting Windows Server 2008 x86 Debug 次に、msbuildを実行しようとすると、次のようになります。 C:\Program Files\Microsoft SDKs\Windows\v7.1>msbuild 'msbuild' is not …
141 .net-4.0  msbuild  sdk 

21
カスタムMSBuildタスクを作成するときに、C#コードから現在のプロジェクトディレクトリをどのように取得しますか?
パスがハードコーディングされた外部プログラムを実行する代わりに、現在のプロジェクトディレクトリを取得します。カスタムタスクのプロセスを使用して外部プログラムを呼び出しています。 どうすればいいですか?AppDomain.CurrentDomain.BaseDirectoryは、VS 2008の場所を教えてくれます。
133 c#  msbuild 

2
MSBuildのExecコマンドで引用符をエスケープする方法
ネットワークドライブをスクリプト内のドライブ文字にマップするMSBuildスクリプトをビルドしようとしていますが、残念ながらターゲットフォルダーへのパスには埋め込みスペースが含まれています。埋め込まれたスペースが原因でマッピングが失敗します。パスの周りの引用符をエスケープできるかどうかはわかりません。私は二重引用符を試しましたが、MSBuildはそれを好みません(それもWindows XPも好みません)。マップを機能させるために、この獣のコーディング方法を知っている人はいますか? <Exec Command="net use x: \\ofmapoly703\c$\program files\ar\iap /user:$(UserID) $(Password)" WorkingDirectory="c:\" ContinueOnError="false" /> もちろん、埋め込まれたスペースは「プログラムファイル」で発生します。
131 msbuild 

25
MSBuildの実行がSDKToolsPathの読み取りに失敗する
VS2008とそれに関連するツールでコンパイルすると、.Net 2.0ベースのWebサイトを適切に構築するために使用されていたNAntスクリプトの実行に少し問題があります。最近すべてのプロジェクト/ソリューションファイルをVS2010にアップグレードしましたが、次のエラーでビルドが失敗します。 [exec] C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(2249,9):エラーMSB3086:タスクはS dkToolsPath ""またはレジストリを使用して "sgen.exe"を見つけることができませんでしたキー「HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A」。SdkToolsPathが設定され、ツールがSdkToolsPathの下の正しいプロセッサ固有の場所に存在し、Microsoft Windows SDKがインストールされていることを確認します 現在、ビルドサーバーにインストールされているWindows SDKの以前のバージョン(.Net 3.5)があり、完全な.Net 4.0フレームワークがインストールされていますが、.Net 4.0固有のバージョンのWindows SDKを実行していません。 少し実験と調査を行った後、ついに新しい環境変数「SDKToolsPath」をセットアップし、それをWindows 6.0 sdkフォルダーのsgen.exeのコピーにポイントしました。これは同じエラーを生成しましたが、SDKToolsPath環境変数が設定されていても(コマンドラインでそれを「エコー」できることと、期待値が設定されていることを確認)、エラーメッセージが読まれていない(空の引用符に注意)。 私が見つけた情報のほとんどは.Net 3.5(またはそれ以前)固有のものです。まだ4.0はあまり関連していません。エラーコードMSB3086を検索しても、有用なものは何も生成されませんでした。これが何であるか考えていますか? スコット
130 .net  msbuild 

7
/ MDまたは/ MTでコンパイルする必要がありますか?
Visual Studioには、コンパイルフラグ/ MDおよび/ MTがあり、必要なCランタイムライブラリの種類を選択できます。 実装の違いは理解していますが、どちらを使用するかはまだわかりません。長所/短所は何ですか? 私が聞いた/ MDの利点の1つは、これにより、誰かがランタイムを更新できるようになり(セキュリティの問題にパッチを当てるなど)、私のアプリがこの更新から恩恵を受けることです。私にとっては、これはほとんど機能ではないように見えます。新しいバージョンに対してテストすることを許可しない限り、ランタイムを変更したくないのです。 気になる点: これはビルド時間にどのように影響しますか?(おそらく/ MTは少し遅いですか?) 他の影響は何ですか? ほとんどの人はどちらを使用しますか?

20
MSBuildがc:\ Program Files(x86)\ MSBuildではなくC:\でMicrosoft.Cpp.Default.propsを探すのはなぜですか?(エラーMSB4019)
msbuildを実行してvc2010プロジェクトをビルドすると、次のエラーが発生します。 error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. msbuildはc:\ Program File(x86)\ MSBuildにあります HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetsPath set to $(MSBuildExtensionsPath32)\ Microsoft.Cpp \ …
124 msbuild 

7
条件付きコンパイルとフレームワークターゲット
ターゲットフレームワークが新しいバージョンである場合、プロジェクトのコードを大幅に改善できるいくつかのマイナーな場所があります。C#での条件付きコンパイルをより効果的に活用して、必要に応じてこれらを切り替えることができるようにしたいと思います。 何かのようなもの: #if NET40 using FooXX = Foo40; #elif NET35 using FooXX = Foo35; #else NET20 using FooXX = Foo20; #endif これらのシンボルのいずれかが無料で提供されますか?これらのシンボルをプロジェクト構成の一部として挿入する必要がありますか?どのフレームワークがMSBuildのターゲットになっているのかを知ることができるので、それは十分簡単に​​思えます。 /p:DefineConstants="NET40" 人々はこの状況をどのように扱っていますか?異なる構成を作成していますか?コマンドラインから定数を渡していますか?
124 c#  .net-3.5  msbuild  .net-4.0 

8
Visual Studioの「すべての警告をエラーとして扱う...」
Visual Studioでは、[警告をエラーとして扱う]オプションを選択して、警告がある場合にコードがコンパイルされないようにすることができます。私たちのチームはこのオプションを使用していますが、警告として残しておきたい警告が2つあります。 警告を抑制するオプションがありますが、警告として表示したいので機能しません。 警告として扱う2つを除いて、すべてのC#警告番号のリストを[特定の警告]テキストボックスに入力するのが唯一の方法のようです。 メンテナンスの頭痛のほかに、このアプローチの最大の欠点は、いくつかの警告に番号がないため、明示的に参照できないことです。たとえば、「この参照を解決できませんでした。アセンブリ 'Data ....'が見つかりませんでした」 誰かがこれを行うためのより良い方法を知っていますか? なぜこれが有用なのかすぐにわからない人のために明確にします。ほとんどの警告がどのように機能するかを考えてください。彼らはあなたが書いたばかりのコードで何かが少しずれているとあなたに言っています。それらを修正するのに約10秒かかり、コードベースをよりクリーンに保ちます。 「廃止」警告はこれとは大きく異なります。時々それを修正することは、単に新しいメソッドシグネチャを消費することを意味します。ただし、クラス全体が古く、数十万行のコードに分散して使用されている場合、修正に数週間以上かかることがあります。あなたはビルドがその間破壊されることを望んでいませんが、間違いなくそれについての警告を見たいと思っています。これは単なる仮説的なケースではなく、私たちにも起こりました。 文字通りの "#warning"警告もユニークです。私は頻繁にしたいそれをチェックするために、私は、ビルドを壊したくはありません。
124 c#  msbuild 

3
Visual Studio 2010なしでMSBuild 4.0をインストールする
ラップトップに.NET 4.0とVS 2010 RCをインストールし、MSBuildが自動的にインストールされました。VS 2010なしで.NET SDKをインストールするだけで継続的インテグレーションサーバーを構築したいと考えていたため、.NET 4.0 FrameworkをMicrosoftからこのリンクからダウンロードしました。残念ながら、このダウンロードではMSBuildがインストールされていないようです(または少なくとも見つかりません)。 このリンクはSDKの適切なリンクですか、それともランタイムのみですか?そうでない場合、SDKのリンクはどこにありますか? .NET 3.5 SP1のダウンロードが200MBを超えたのは35MBしかなかったので、それがSDK全体であることに疑いがある。

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