5

プロジェクトを複数のバージョンでビルドするための小さなMSBuildスクリプトを作成しました。VS2012コマンドプロンプトから実行すると、エラーや例外は発生しません。ただし、作成されたアセンブリを比較すると、それらは同じです。スクリプトに何か問題がありますか?

<Target Name="Build">

  <MSBuild Projects=".\WcfClientBase\WcfClientBase.csproj" 
           Properties="Configuration=Release;OutputPath=.\BuildArtifacts\net45;TargetFrameworkVersion=v4.5" />

  <MSBuild Projects=".\WcfClientBase\WcfClientBase.csproj"
           Properties="Configuration=Release;OutputPath=.\BuildArtifacts\net40;TargetFrameworkVersion=v4.0" />

  <MSBuild Projects=".\WcfClientBase\WcfClientBase.csproj"
           Properties="Configuration=Release;OutputPath=.\BuildArtifacts\net35;TargetFrameworkVersion=v3.5" />

</Target>

VS2012Professionalをインストールしています。また、.NET4.5には独自のMSBuild.exeがないことにも気づきました。バージョン4.0のものを使用していますか?

アップデート

バージョンごとにVisualStudioを使用してビルドしましたが、すべてのアセンブリが異なります。スクリプトに問題があります。TargetFrameworkVersionパラメーター名を故意にタイプミスしましたが、それでも同じ出力が作成および生成されました。プロジェクトファイルからそのパラメータを上書きできないか、他のパラメータが不足している可能性があります。他にアイデアはありますか?

4

1 に答える 1

4

また、IntermediateOutputPathプロパティをカスタマイズする必要があります。そうしないと、3つのフレーバーすべてが同じ中間ディレクトリを共有しobj\Releaseます。これを試して:

<Target Name="Build"> 
     <MSBuild Projects="WcfClientBase\WcfClientBase.csproj"  
         Properties="Configuration=Release;OutputPath=BuildArtifacts\net45\;IntermediateOutputPath=obj\Release\net45\;TargetFrameworkVersion=v4.5" /> 
     <MSBuild Projects="WcfClientBase\WcfClientBase.csproj"  
         Properties="Configuration=Release;OutputPath=BuildArtifacts\net40\;IntermediateOutputPath=obj\Release\net40\;TargetFrameworkVersion=v4.0" /> 
     <MSBuild Projects="WcfClientBase\WcfClientBase.csproj"  
         Properties="Configuration=Release;OutputPath=BuildArtifacts\net35\;IntermediateOutputPath=obj\Release\net35\;TargetFrameworkVersion=v3.5" /> 
 </Target> 
于 2012-08-31T21:20:19.903 に答える