3

嗨,

是否可以在 C# 文件中设置 TFS 构建的数量?

TFS 构建应将版本号替换为当前版本号。

public const string SERVICE_VERSION = "2.0 Build: 20130518.1";

编辑: const 在一个名为 SharedMethods 的类中:

public static class SharedMethods 
{
    public const string SERVICE_VERSION = "2.0 Build: 20130518.1";
    ...
    ...
}

TFS 构建应该检出元素、更新版本、检入元素并继续正常的构建过程。

4

2 回答 2

3

查看这篇文章: 创建自定义 WF 活动以同步版本和内部版本号

它描述了如何更改 AssemblyInfo.cs 文件中的版本号。您可以调整它以满足您的需求。

于 2013-05-28T13:06:45.113 回答
2

如果您的文件仅包含这些行,也许您可​​以执行以下操作:

    <WriteLinesToFile File="$(VersionFilePath)" Lines="public const string SERVICE_VERSION = %22$(Version)%22%3B" Overwrite="true" Encoding="ASCII"/>

请注意, " 应替换为 %22 和 ; 替换为 %3B (当您添加 ';' 时,将插入一个新行字符)。

否则,您可以在 msbuild 中编写 C# 代码来执行您想要的操作。一个例子:

<UsingTask TaskName="UpdateApplicationRevision" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
   <ParameterGroup>
        <ProjectFilePath ParameterType="System.String" Required="true" />
    </ParameterGroup>
        <Task>
          <Reference Include="$(MSBuildToolsPath)\Microsoft.Build.dll" />
          <Reference Include="System.Xml" />
        <Code Type="Fragment" Language="cs">
            <![CDATA[
      var project = new Microsoft.Build.Evaluation.Project(ProjectFilePath);
      var property = project.GetProperty("ApplicationRevision");
      property.UnevaluatedValue = "" + (System.Int32.Parse(property.EvaluatedValue) + 1);
      project.Save();
]]>
        </Code>
    </Task>
</UsingTask>

在这里,我修改了一个 csproj (xml) 文件,但您可以随意编写自己的代码来读取您的文件并对其进行更新...

于 2013-05-28T12:19:36.450 回答