2011-02-28 58 views
0

Hy there!如何檢索構建事件的主要/次要/構建/修訂版號

我使用這段代碼,複製一些文件上生成後事件:

<PropertyGroup> 
    <DemoPath1>..\demoPath1</DemoPath1> 
</PropertyGroup> 
<Target Name="AfterBuild"> 
    <Exec Command="robocopy $(ProjectDir)$(DemoPath1) $(ProjectDir)demoPath2/$(Revision) * /XD .svn _svn /XF *.cs /S" IgnoreExitCode="true" /> 
</Target> 

正如你可以看到,我想用$(Revision) - 顯然,這是不會工作...

任何人都可以幫我嗎?

@mods:我不知道要使用哪個標籤......一方面是msbuild,另一方面是visual studio ...?隨時編輯!

+0

@Cody灰色:感謝標記! – 2011-02-28 08:41:06

+0

[確定彙編版本在後生成事件嗎?]可能的重複?(http://stackoverflow.com/questions/2243593/determine-assembly-version-during-a-post-build-event) – 2011-02-28 12:14:23

回答

1

最簡單的方法是:

<GetAssemblyIdentity AssemblyFiles="$(TargetPath)"> 
    <Output TaskParameter="Assemblies" ItemName="AssemblyVersion" /> 
</GetAssemblyIdentity> 

,我已經使用了這種方式:

<Exec Command="robocopy $(ProjectDir)$(SomeProperty) $(ProjectDir)somePath/%(AssemblyVersion.Version) * /S" IgnoreExitCode="true" /> 
+0

您確定AssemblyVersion 。版本正確嗎?它沒有給我任何東西,至少AssemblyInfo.Version返回0.0.0.0 - 雖然這也是錯誤的,因爲它不符合我在AssemblyInfo.cs中的設置 – AgentKnopf 2013-05-30 12:45:45

+0

您是否在'GetAssemblyIdentity'任務中引用了正確的程序集? – 2013-05-31 06:14:21

+0

我使用AssemblyFiles =「$(TargetDir)\ $(TargetName).exe」引用由我的項目生成的可執行文件。$(TargetDir)\ $(TargetName).exe也用於以下複製任務中,並且正確.exe文件被複制,所以我假設我引用它的方式是正確的。但是它可能是一個問題,它是一個可執行文件,而不是一個DLL文件? – AgentKnopf 2013-05-31 06:51:01

0

您不希望從中獲取版本號。然而,你得到它,你需要做的就是自己填充$(Revision)屬性。多給點細節,我可以幫你解決。