.net core 从.NET核心中的C#访问“.csproj”属性

.net core 从.NET核心中的C#访问“.csproj”属性,.net-core,csproj,.net Core,Csproj,我的.csproj文件包含: ... <PackageId>MyProject</PackageId> <Version>1.0.0</Version> ... 。。。 我的项目 1.0.0 ... 如何从项目代码中访问该属性?要访问项目的版本和更通用的属性,请使用: 使用as类型T检索版本属性 有关T的其他值,请参见上列出的属性 例如: typeof(Startup).GetTypeInfo().Assembly.GetCustomAttr

我的
.csproj
文件包含:

...
<PackageId>MyProject</PackageId>
<Version>1.0.0</Version>
...
。。。
我的项目
1.0.0
...

如何从项目代码中访问该属性?

要访问项目的版本和更通用的属性,请使用:

使用as类型T检索版本属性

有关T的其他值,请参见上列出的属性

例如:
typeof(Startup).GetTypeInfo().Assembly.GetCustomAttribute().InformationalVersion

如果代码可以在没有项目的情况下编译,为什么要访问.csproj?它是生成文件的内容。您没有将项目文件部署到用户的计算机上,它只存在于您的计算机上。你也不把它包含在Nuget包中。如果您想这样做,但肯定不应该这样做,那么就使用XmlDocument。这对版本有效,但对PackageId无效,但我不知道OP的意图。但是对于所有与版本相关的属性,这是最好/正确的方法。@MartinUllrich你说得对,我已经编辑了我的答案。:)是的
PackageId
将永远不会用于除创建NUPKG之外的任何用途,并且永远不会是dll/any属性的一部分。。