我有一个Visual Studio 2008解决方案,其中主输出EXE是VB.NET Winforms EXE,它具有多个vb.net和C#dll从同一解决方案链接。整个解决方案都在颠覆的版本控制下。

现在,我想通过具有当前SVN修订号码的生成文件自动更新。为此,我发现了这个整洁的项目: http://svnversiontasks.codeplex.com/您还需要msbuild.communituon.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="&quot;$(VS90COMNTOOLS)..\IDE\devenv&quot; ..\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。但是也许有人为此有解决方案...

有帮助吗?

解决方案

如果您查看UpdateVersion任务源代码,则应使用Regex来解析assemblyInfo文件,因此如果它与VB文件不起作用,则不足为奇。

您可以做自己想做的事,只使用msbuild.community.tasks:

  • svnversion 要获取修订(您还可以从svnversiontasks使用SVNGETPROPERTY任务)
  • 汇编金 使用正确的版本生成汇编信息。此任务处理VB。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top