私たちの Web プロジェクトでは、静的コンテンツをバージョン管理するためにプロジェクトのアセンブリ バージョンが必要です。
アセンブリ ID を取得し、そこからバージョン番号を取得するために、Web プロジェクト ファイルでターゲットを宣言しました。
<PropertyGroup>
<IvanhoWebVersion>
</IvanhoWebVersion>
</PropertyGroup>
<Target Name="SetIvanhoWebVersion" AfterTargets="AfterBuild">
<Message Text="-----------------">
</Message>
<Message Text="Entering target SetIvanhoWebVersion">
</Message>
<Message Text="-----------------">
</Message>
<GetAssemblyIdentity AssemblyFiles="$(OutputPath)$(AssemblyName).dll">
<Output TaskParameter="Assemblies" ItemName="AssemblyIdentities" />
</GetAssemblyIdentity>
<CreateProperty value="%(AssemblyIdentities.Version)">
<Output TaskParameter="Value" PropertyName="IvanhoWebVersion" />
</CreateProperty>
<Message Text="Assembly version = v$(IvanhoWebVersion)">
</Message>
<Exec Command=" "$(SolutionDir)Ivanho.Lib\TranslationGenerator\TranslationGenerator.exe" "$(ProjectDir)Areas\UI\Static\locales\translationsrc\Translations-EN-NL-AR.xlsx" "$(ProjectDir)Areas\UI\Static\locales\v.$(IvanhoWebVersion)"" />
</Target>
これは、ローカルでビルドする場合は魅力的に機能しますが、これを TFS ビルド サーバーにチェックインしようとすると、次のエラーで失敗します。
「bin\Ivanho.Web.dll」のアセンブリ名を取得できません。ファイルまたはアセンブリ 'Ivanho.Web.dll' またはその依存関係の 1 つを読み込めませんでした。指定されたパスが見つかりません。
このエラーは、呼び出しの同じ行でスローされGetAssemblyIdentity
ます。
これがビルド サーバーで機能しない理由がわかりません。MSBuild を初めて使用するので、誰かが正しい方向に向けることができますか? よろしくお願いします!