2012-07-09 3 views
9

私はVisual Studio 2012 RCを使用してC#ソリューションを使用しています。すべての設定固有の設定は、すべての.csprojファイルに含まれる単一の.propsファイルに格納されます。Visual Studioは自分のcsprojにプロパティを追加し続けます。どうして?

しかし、VSは、目の前にこの権利を置くことを主張している:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> 
    <IntermediateOutputPath>C:\Users\xyz\AppData\Local\Temp\vs855E.tmp\Debug\</IntermediateOutputPath> 
</PropertyGroup> 
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'"> 
    <IntermediateOutputPath>C:\Users\xyz\AppData\Local\Temp\vs855E.tmp\Release\</IntermediateOutputPath> 
</PropertyGroup> 

<Import Project="$(MSBuildProjectDirectory)\..\Common.props" /> 

それはなぜですか?必要であれば、あなたは、これらの設定を上書きすることができhttp://pastebin.com/Uued1XY0

+1

単純な答えは、マイクロソフトでは、このようなcsprojファイルのカスタマイズを行うことは決して考えていないということです。場合によっては、プロジェクトファイルを少しだけカスタマイズすることができますが(運が良ければ)、ほとんどの場合、自分自身に悩まされることがあります。 –

答えて

0

はFYI、私の一般的なファイルは、次のようになります。以前にインポートが行われた場合は、Visual Studioのプロパティが優先されます。 MSBuildでは、最後の定義が勝利して使用されます。これは良いことです。エラーの原因ですか?それとも好きではありませんか?

+0

プロジェクトをリロードするたびにこれらの一時パスが変わるので、私はそれが気に入らない。すべてのプロジェクトに変更が加えられていたので、バージョンコントロールから非常に迷惑になりました。 –

0

あなたのプロジェクトであなたを指定しました。プロパティファイルにはBaseIntermediateOutputPathがあります。値を指定しないと、ベースから派生します。

パスが指定されていない場合、BaseIntermediateOutputPathから派生した完全中間出力パス。たとえば、\ obj \ debugです。このプロパティーをオーバーライドすると、BaseIntermediateOutputPathを設定しても効果はありません。

は参照してください:MSBuildのは悪いパスを与えられたときにhttp://msdn.microsoft.com/en-us/library/bb629394.aspx

5

これらIntermediateOutputPath年代を挿入することができます。

出力フォルダのSolutionDirの後に余分なスラッシュがありました。 (余分なスラッシュに注意してください)私たちのために働いていなかった何

<OutputPath>$(SolutionDir)\out\bin\</OutputPath> 
<IntermediateOutputPath>$(SolutionDir)\out\obj\</IntermediateOutputPath> 

仕事をやった:

<OutputPath>$(SolutionDir)out\bin</OutputPath> 
<IntermediateOutputPath>$(SolutionDir)out\obj</IntermediateOutputPath> 

あなたの特定のケースのトラブルシューティングを支援するために、診断MSBuildの出力をオンにしようとすると、 [ツール] - > [オプション] - > [プロジェクトとソリューション] - > [ビルドと実行] - > [MSBuild]プロジェクトの出力ログを冗長表示します。次に、生成されたフォルダ(たとえば、Temp)を検索します。

共通のproj/props/targetsファイルを使用することは素晴らしいアイデアですが、Visual Studioと少し戦う必要があります。

+0

トラブルシューティングの手順は私にとっては機能しません(Visual Studio 2013)。ビルド時ではなく、ロード時にプロジェクトファイルがVSによって変更されるため、診断ビルドの出力が役立たない。 – DannyMeister

関連する問題