发现到目前为止
>在project.Json中设置version属性。来源:DNX Overview,Working with DNX projects.这似乎设置了AssemblyVersion,AssemblyFiLeversion和AssemblyinformationalVersion,除非被属性覆盖(见下一个点)。
>设置AssemblyVersion,AssemblyFiLeversion,AssemblyinformationalVersion属性似乎也可以工作并覆盖在project.Json中指定的版本属性。
例如,在project.Json中包含’version’:’4.1.1- *’,并在.cs文件中设置[assembly:AssemblyFiLeversion(“4.3.5.0”)]将导致AssemblyVersion = 4.1.1.0,AssemblyinformationalVersion = 4.1 .1.0和AssemblyFiLeversion = 4.3.5.0
通过属性设置版本号,例如AssemblyFiLeversion,仍然支持?
我错过了什么 – 还有其他方法吗?
上下文
我正在寻找的方案是在多个相关项目之间共享单个版本号。一些项目使用.NET Core(project.Json),其他项目使用完整的.NET Framework(.csproj)。所有这些都在逻辑上是单个系统的一部分,并且一起版本化。
到目前为止,我们使用的策略是使用AssemblyVersion和AssemblyFiLeversion属性在我们的解决方案的根目录下有一个SharedAssemblyInfo.cs文件。这些项目包括一个指向该文件的链接。
我正在寻找方法来实现与.NET Core项目相同的结果,即要修改单个文件。
解决方法 为什么不更改project.Json文件中的值。使用 CakeBuild可以做这样的事情(优化可能)Task("Bump").Does(() => { var files = Getfiles(config.SrcDir + "**/project.Json"); foreach(var file in files) { information("Processing: {0}",file); var path = file.ToString(); var trg = new StringBuilder(); var regExVersion = new System.Text.RegularExpressions.Regex("\"version\":(\s)?\"0.0.0-\*\","); using (var src = System.IO.file.OpenRead(path)) { using (var reader = new StreamReader(src)) { while (!reader.EndOfStream) { var line = reader.Readline(); if(line == null) continue; line = regExVersion.Replace(line,string.Format("\"version\": \"{0}\",",config.SemVer)); trg.Appendline(line); } } } System.IO.file.WriteallText(path,trg.ToString()); }});
那么如果你有一个依赖项目的UnitTest项目,使用“*”进行依赖解析。
另外,做dotnet还原之前做碰撞。我的订单如下所示:
Task("Default") .IsDependentOn("InitOutDir") .IsDependentOn("Bump") .IsDependentOn("Restore") .IsDependentOn("Build") .IsDependentOn("UnitTest");Task("CI") .IsDependentOn("Default") .IsDependentOn("Pack");
链接到完整版脚本:https://github.com/danielwertheim/Ensure.That/blob/3a278f05d940d9994f0fde9266c6f2c41900a884/build.cake
实际值,例如该版本来自于在构建脚本中导入单独的build.config文件:
#load "./buildconfig.cake"var config = BuildConfig.Create(Context,BuildSystem);
配置文件看起来像这样(从https://github.com/danielwertheim/Ensure.That/blob/3a278f05d940d9994f0fde9266c6f2c41900a884/buildconfig.cake开始):
public class BuildConfig{ private const string Version = "5.0.0"; public Readonly string SrcDir = "./src/"; public Readonly string OutDir = "./build/"; public string Target { get; private set; } public string Branch { get; private set; } public string SemVer { get; private set; } public string BuildProfile { get; private set; } public bool IsTeamCityBuild { get; private set; } public static BuildConfig Create( ICakeContext context,BuildSystem buildSystem) { if (context == null) throw new ArgumentNullException("context"); var target = context.Argument("target","Default"); var branch = context.Argument("branch",string.Empty); var branchIsRelease = branch.Tolower() == "release"; var buildrevision = context.Argument("buildrevision","0"); return new BuildConfig { Target = target,Branch = branch,SemVer = Version + (branchIsRelease ? string.Empty : "-b" + buildrevision),BuildProfile = context.Argument("configuration","Release"),IsTeamCityBuild = buildSystem.TeamCity.IsRunningOnTeamCity }; }}总结
以上是内存溢出为你收集整理的asp.net-core – 设置.NET Core项目的版本号全部内容,希望文章能够帮你解决asp.net-core – 设置.NET Core项目的版本号所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)