マルチプロジェクトソリューションを構築するときに、1つのプロジェクト(つまり、ソリューションレベルではなくプロジェクトレベル)にのみ適用されるmsbuildのコマンドライン引数を指定する方法はありますか?
私が尋ねる理由は、クリックワンス展開のサイドバイサイドインストールを有効にしたいからです。例を挙げましょう:
1)これは機能します
MSBuild "C:\ Dev \ MyProj \ MyProj.Shell \ MyProj.Shell.csproj" / p:SkipInvalidConfigurations = true / target:publish / p:OutputPath = "C:\ Dev \ Temp \" / p:ApplicationVersion=1.2。 3.4 / p:ProductName = "My Proj" / p:Configuration = "Release" / p:Platform = "Mixed Platforms" / verbosity:diagnostic
2)これはしません
MSBuild "C:\ Dev \ MyProj \ MyProj.Shell \ MyProj.Shell.csproj" / p:SkipInvalidConfigurations = true / target:publish / p:OutputPath = "C:\ Dev \ Temp \" / p:ApplicationVersion=1.2。 3.4 / p:ProductName = "My Proj Test" / p:Configuration = "Release" / p:Platform = "Mixed Platforms" / verbosity:diagnostic / p:AssemblyName = "MyProj.Test"
いくつかのポイントを明確にして繰り返します。
- 1と2の唯一の違いは
/p:AssemblyName="MyProj.Text"
- 私が使用して
/target:publish
いるので、これはクリックワンスビルドです - これはマルチプロジェクトソリューションであり、csprojファイルをターゲットにしているだけでもそのようにビルドされます。
例2が失敗する理由は、すべてのプロジェクトのAssemblyNameの名前が、渡されたアセンブリ名、つまりMyProj.Testに変更されているためです。コマンドラインから渡されるパラメーターはグローバルであるため、これはある程度意味がありますが、ここでもcsprojファイルのみを対象としています。
とにかくそれが起こります。では、msbuildコマンドラインパラメーターを渡して、MyProj.Shell.csprojファイルの1つのAssemblyNameプロパティのみを変更する方法はありますか?