未声明’AssemblyInfoFileMask’。 由于其保护级别,它可能无法访问

我正在创建一个自定义构建tfs活动,以便在azure持续集成中使用。

我使用了这个博客的代码: http : //www.ewaldhofman.nl/post/2010/06/01/Customize-Team-Build-2010-e28093-Part-10-Include-Version-Number-in-the -build-Number.aspx

正如您可以在其公共代码下面看到AssemblyInfoFileMask。 另外请检查截图,看看我的意思,BuildDetail它在同一个类,并没有显示蓝色图标中的错误。

在此处输入图像描述

我会在这里粘贴代码:

[BuildActivity(HostEnvironmentOption.Controller)] public sealed class GetAssemblyVersion : CodeActivity { [RequiredArgument] public InArgument AssemblyInfoFileMask { get; set; } [RequiredArgument] public InArgument BuildDetail { get; set; } protected override string Execute(CodeActivityContext context) { // Obtain the runtime value of the input arguments string assemblyInfoFileMask = context.GetValue(this.AssemblyInfoFileMask); IBuildDetail buildDetail = context.GetValue(this.BuildDetail); var workspace = buildDetail.BuildDefinition.Workspace; var vc = buildDetail.BuildServer.TeamProjectCollection.GetService(); string attribute = "AssemblyFileVersion"; // Define the regular expression to find (which is for example 'AssemblyFileVersion("1.0.0.0")' ) Regex regex = new Regex(attribute + @"\(""\d+\.\d+\.\d+\.\d+""\)"); // For every workspace folder (mapping) foreach (var folder in workspace.Mappings) { // Get all files (recursively) that apply to the file mask ItemSet itemSet = vc.GetItems(folder.ServerItem + "//" + assemblyInfoFileMask, RecursionType.Full); foreach (Item item in itemSet.Items) { context.TrackBuildMessage(string.Format("Download {0}", item.ServerItem)); // Download the file string localFile = Path.GetTempFileName(); item.DownloadFile(localFile); // Read the text from the AssemblyInfo file string text = File.ReadAllText(localFile); // Search for the first occurrence of the version attribute Match match = regex.Match(text); // When found if (match.Success) { // Retrieve the version number string versionNumber = match.Value.Substring(attribute.Length + 2, match.Value.Length - attribute.Length - 4); Version version = new Version(versionNumber); // Increase the build number -> this will be the new version number for the build Version newVersion = new Version(version.Major, version.Minor, version.Build + 1, version.Revision); context.TrackBuildMessage(string.Format("Version found {0}", newVersion)); return newVersion.ToString(); } } } return "No version found"; } } } 

蓝色感叹号表示您尝试将名为AssemblyInfoFileMaskVariable / Argument的值传递给名为AssemblyInfoFileMask的Activity上的Property

您需要自己声明参数或变量以传递给您的活动。

如果您希望能够在构建定义中设置AssemblyInfoFileMask ,则需要将其声明为Argument。

查看图片的此更新版本,您将看到您声明的位置:

参数

一旦声明了参数,就需要找到MetaData Collection Argument并将其添加到那里。 有关更多详细信息,请参阅此帖

如果您不需要在构建定义中设置它(它将对所有构建保持不变),那么只需添加一个Variable并将其值设置为您需要的模式。