2013-05-03 126 views
0

對於我們的Web項目,我需要項目的程序集版本來版本化我們的靜態內容。MSBuild目標在服務器上失敗,但在本地成功

我已經宣佈在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構建服務器失敗,出現以下錯誤:

Cannot get assembly name for "bin\Ivanho.Web.dll". Could not load file or assembly 'Ivanho.Web.dll' or one of its dependencies. The system cannot find the path specified.

此錯誤是在同一直線上GetAssemblyIdentity調用拋出。

我不明白爲什麼這不是在構建服務器上工作,我很新的MSBuild,有人可以指出我在正確的方向嗎?提前謝謝了!

回答

1

文件不存在或其路徑錯誤。 查看構建服務器以查看文件是否存在。您可以使用converttoabsolutepath任務來確定路徑,請參閱:http://msdn.microsoft.com/en-us/library/bb882668(v=vs.100).aspx。您可以輸入錯誤語句來檢查文件,例如

<Error Condition="!Exists('$(OutputPath)$(AssemblyName).dll')" Text="FileNotFound"/> 
相關問題