0

私たちの 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=" &quot;$(SolutionDir)Ivanho.Lib\TranslationGenerator\TranslationGenerator.exe&quot; &quot;$(ProjectDir)Areas\UI\Static\locales\translationsrc\Translations-EN-NL-AR.xlsx&quot; &quot;$(ProjectDir)Areas\UI\Static\locales\v.$(IvanhoWebVersion)&quot;" />
  </Target>

これは、ローカルでビルドする場合は魅力的に機能しますが、これを TFS ビルド サーバーにチェックインしようとすると、次のエラーで失敗します。

「bin\Ivanho.Web.dll」のアセンブリ名を取得できません。ファイルまたはアセンブリ 'Ivanho.Web.dll' またはその依存関係の 1 つを読み込めませんでした。指定されたパスが見つかりません。

このエラーは、呼び出しの同じ行でスローされGetAssemblyIdentityます。

これがビルド サーバーで機能しない理由がわかりません。MSBuild を初めて使用するので、誰かが正しい方向に向けることができますか? よろしくお願いします!

4

1 に答える 1

1

ファイルが存在しないか、ファイルへのパスが間違っています。ビルド サーバーを調べて、ファイルがあるかどうかを確認します。converttoabsolutepath タスクを使用して特定のパスを確認できます: http://msdn.microsoft.com/en-us/library/bb882668(v=vs.100).aspx . ファイルをチェックするエラーステートメントを入れることができます。

<Error Condition="!Exists('$(OutputPath)$(AssemblyName).dll')" Text="FileNotFound"/>
于 2013-05-03T10:46:00.383 に答える