在使用"project.json“文件的DNX应用程序中,有没有办法从"project.json”文件中读取"version“属性的值?
我正在编写一个向当前HTTP响应中写入内容的库,我想在其中显示应用程序的版本。
任何关于如何做到这一点的帮助都是非常感谢的。
发布于 2016-04-19 00:46:43
如果您在构建过程中(或以任何其他方式)设置版本属性,则可以这样做:
using System;
using System.Reflection;
[assembly:AssemblyVersionAttribute("1.2.3")]
namespace Test
{
class Program
{
public static void Main()
{
var assembly = typeof(Program).GetTypeInfo().Assembly;
var name = assembly.GetName();
Console.WriteLine($"{name.Name}: {name.Version}");
}
}
}我用的是新的dotnet cli,它取代了dnx,但它应该也能与dnx dnxcore50一起工作。
发布于 2016-04-30 12:58:33
您是在编写类库还是ASP.NET应用程序?
如果是类库,则可以将版本字符串复制到在运行时读取的资源文件中,以获取版本。使用类库做这类事情是很困难的,因为你不会得到启动和IoC的好处。
如果是ASP.NET,那么只需将一个版本添加到您的appsettings.json配置中(或一个用于存储设置的自定义json文件),并在启动时读取它:http://docs.asp.net/en/latest/fundamentals/configuration.html
发布于 2016-12-01 04:51:47
如果您在web应用程序中运行,而不是在类库中运行,则可以采用多种方法来完成此操作。第一条自定义属性数据(应检查属性是否可用):
this.GetType().Assembly.GetCustomAttributesData()
.First(x => x.AttributeType.FullName == "System.Reflection.AssemblyInformationalVersionAttribute")
.ConstructorArguments[0];第二种方式
var name = this.GetType().AssemblyQualifiedName;
name = name.Substring(name.IndexOf("Version=") + 8);
var verion = name.Substring(0, name.IndexOf(", "));https://stackoverflow.com/questions/36634176
复制相似问题