AssemblyInfo を「直接」ローカライズすることができない場合でも (たとえばResources.MyCompany
、質問に示されているように使用します)、実際のコンパイルの前に、コンパイル時に完全な AssemblyInfo を生成することができます。
無料でオープン ソースのMSBuild Community Tasksを使用してこれを行う方法の例を次に示します。
両方のリンクは、ソリューションをビルドするために呼び出される別の MSBuild ファイルでそれを行う方法を示していますが、これを .csproj ファイルに直接配置することもできます。つまり、AssemblyInfo.cs
Visual Studio でソリューションをビルドするときにも作成できます。
これは、これを行う方法の私のプロジェクトの 1 つの例です。(この例では全体を生成するのではなく、バージョン番号のみを含む別のファイルを
生成することに注意してください!)AssemblyInfo.cs
MSBuild コミュニティ タスクの呼び出しは、.csproj ファイルにあります。
<Target Name="BeforeBuild">
<PropertyGroup>
<ProdVer>0.0</ProdVer>
</PropertyGroup>
<PropertyGroup>
<ProdVer Condition="'$(VersionNumber)' != ''">$(VersionNumber)</ProdVer>
</PropertyGroup>
<AssemblyInfo CodeLanguage="CS" OutputFile="AssemblyVersion.cs" AssemblyVersion="$(ProdVer)" AssemblyFileVersion="$(ProdVer)" />
</Target>
この行は、バージョン番号が に設定され<AssemblyInfo ...
たファイルを作成するために MSBuild コミュニティ タスクを呼び出します。数行前に設定され、空ではないという名前の環境変数がある場合、その値に設定されます。ビルド スクリプトを呼び出す前に、バッチ ファイルを呼び出すだけで設定され
ます。AssemblyVersion.cs
$(ProdVer)
$(ProdVer)
0.0
$(VersionNumber)
$(ProdVer)
$(VersionNumber)
set VersionNumber=1.1
これは、Visual Studio からビルドする場合AssemblyVersion.cs
は のバージョン番号で作成され、ビルド スクリプトを使用してビルドする場合は実際のバージョン番号 (私の例では ) で作成されることを意味します。0.0
1.1
Resources.MyCompany
確かに、この方法でローカライズされた会社情報をアセンブリに取り込むのは、単にどこかを呼び出すよりも手間がかかりますが、必要に応じて AssemblyInfo をローカライズすることは可能です。