1

我想實現我在這篇文章中看到的:TFS and msbuild version number with last changeset。也就是說,我試圖在構建時獲取最後一個Changeset編號,以便可以在AssemblyVersionInfo.cs中使用它。MSBuild,擴展包和TfsVersion

我正在使用VS 2008和TFS 2008.我已經安裝了MSBuild擴展包v3.5.9.0(x64)。它位於C:\ Program Files \ MSBuild \ ExtensionPack中。這裏是我的MSBuild項目:

<Project ToolsVersion="3.5" DefaultTargets="Default" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="C:\Program Files\MSBuild\ExtensionPack\MSBuild.ExtensionPack.tasks"/> 
    <Target Name="Default"> 
    <TfsVersion TfsLibraryLocation="C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies" 
       LocalPath="$(SolutionRoot)"> 
     <Output TaskParameter="Changeset" PropertyName="ChangesetNumber"/> 
    </TfsVersion> 
    <Message Text="TFS ChangeSetNumber: $(ChangesetNumber)" /> 
    </Target> 
</Project> 

這裏是我正在運行的腳本:

C:\Build\TeamBuildTypes\Nightly_Main>MSbuild test.proj 

這是我的錯誤信息:

C:\Build\TeamBuildTypes\Nightly_Main\test.proj(4,5): error MSB4062: The "MSBuild.ExtensionPack.VisualStudio.TfsVersion" task could not be loaded from the asse 
mbly C:\Program Files (x86)\MSBuild\ExtensionPack\MSBuild.ExtensionPack.dll. Could not load file or assembly 'file:///C:\Program Files (x86)\MSBuild\ExtensionPack\MSBuild.ExtensionPack.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, and that the assembly and all its dependencies are available. 

任何幫助表示讚賞。

感謝, 斯科特

+0

聽起來很明顯,但是......該文件確實存在於生成機器上嗎?它可能是一個32位操作系統。你看過融合日誌,看看它是否是依賴性問題? – 2011-06-09 17:26:16

+0

版本屬性數字僅限於uint16,所以雖然這種方法很好,但最終將無法爲您的程序集編寫版本。 – 2011-06-10 12:32:25

回答

1

看起來MSBuild.ExtensionPack.tasks試圖找到庫不是他們所在。您可以打開此文件,並代替其他ExtensionTasksPath聲明添加這個在文件

<ExtensionTasksPath>C:\Program Files\MSBuild\ExtensionPack\</ExtensionTasksPath> 

的頂部(只是評論並添加此)。這應該解決路徑問題。
我假設存在C:\Program Files\MSBuild\ExtensionPack\MSBuild.ExtensionPack.dll