我有一個Visual Studio 2008解決方案,其中主輸出exe是一個VB.Net Winforms exe文件,其中有幾個VB.Net和C#dll從相同的解決方案鏈接。整個解決方案在版本控制下進行顛覆。如何使用Svn版本任務設置vb項目的版本
現在我想通過生成的文件自動更新當前svn版本號。 爲此目的,我發現這個整潔的項目:http://svnversiontasks.codeplex.com/ 你也需要MSBuild.Communuity.Tasks這個工作。
有關於如何更新轉數在解決方案中的每一個項目,我用的MSBuild例如:
<Import Project="$(MSBuildExtensionsPath)\SvnTools.Targets\SvnTools.Tasks.VersionManagement.Tasks" />
<Target Name="build">
<CreateItem Include="../**/AssemblyInfo.vb;../**/AssemblyInfo.cs;../**/Properties/AssemblyInfo.cs">
<Output TaskParameter="Include" ItemName="AssemblyInfoFiles" />
</CreateItem>
<CreateItem Include="../**/*.vdproj;*.vdproj">
<Output TaskParameter="Include" ItemName="DeploymentProjectFiles" />
</CreateItem>
<UpdateVersion AssemblyInfoFiles="@(AssemblyInfoFiles)" DeploymentProjectFiles="@(DeploymentProjectFiles)" Format="yyyy.mm.dd.rev" />
<Exec Command=""$(VS90COMNTOOLS)..\IDE\devenv" ..\MyApp.sln /build" />
<RevertVersionChange AssemblyInfoFiles="@(AssemblyInfoFiles)" DeploymentProjectFiles="@(DeploymentProjectFiles)" />
</Target>
我修改了原有的文件還包括AssemblyInfo.vb文件,並將其保存作爲一個msbuild.proj文件。
但是,如果我從控制檯執行的MSBuild我看到C#項目被更新(我也可以證實,從輸出DLL的屬性,但我的VB項目保持不變:
Reverting version number change: ../App1\AssemblyInfo.vb
Updating version number (to rev 0) for file: ../App1\AssemblyInfo.vb
D:\Source\MyApp\MyAppDeploy\MyAppDeploy.csproj : warning : Version attribute not found, file not updated.
Reverting version number change: ../App2\Properties\AssemblyInfo.cs
Updating version number (to rev 0) for file: ../App2\Properties\AssemblyInfo.cs
Successfully updated file.
也許任務不支持VB.Net 但也許有人有這個解決方案...
我知道,目前我使用SvnVersion更新我的項目(對不起,我沒有提到過),但由於AssemblyInfo文件在回購中,它們總是標記爲已更改。 Svn版本任務也支持部署項目。 – 2010-05-03 14:13:30
好吧,AssemblyInfo任務的提示是個好主意。現在我在build之前將修訂版本設置爲我的svn-revision,並在build之後回到零,所以如果我提交我的更改,文件將保持不變。 – 2010-05-07 22:09:50