我试图获得通过代码项目名称(TestGetAssemblyName
)(组装):如何在ASP.NET C#代码通过获得项目名称
我试过System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
但这会返回一些奇怪的混乱的字符,看起来动态生成。有没有办法让TestGetAssemblyName
通过代码返回给我?
我试图获得通过代码项目名称(TestGetAssemblyName
)(组装):如何在ASP.NET C#代码通过获得项目名称
我试过System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
但这会返回一些奇怪的混乱的字符,看起来动态生成。有没有办法让TestGetAssemblyName
通过代码返回给我?
您在解决方案资源管理器中读取的内容与编译后的程序集名称或程序集标题完全无关。此外,它不会被编写在编译程序集的任何位置,因此您无法从代码中访问该名称。
假设MyType
是在汇编中定义,你可以使用AssemblyTitleAttribute
属性(通常在AssemblyInfo.cs
定义)阅读给定标题(无关编译的程序集名称或代码命名空间)类型:(AssemblyTitleAttribute
)
var assembly = typeof(MyType).Assembly;
var attribute = assembly
.GetCustomAttributes(typeof(AssemblyTitleAttribute), true)
.OfType<AssemblyTitleAttribute>()
.FirstOrDefault();
var title = attribute != null ? attribute.Title : "";
这只是AssemblyInfo.cs
中定义的属性之一,请选择最符合您要求的属性。
另一方面,您可以使用程序集名称(Name
属性Assembly
)来获取已编译的程序集名称(也可能不同于程序集标题和项目标题)。
编辑
为了让单行你必须把它放在你的代码的地方(当然!):
public static class App
{
public static string Name
{
get
{
if (_name == null)
{
var assembly = typeof(App).Assembly;
var attribute = assembly
.GetCustomAttributes(typeof(AssemblyTitleAttribute), true)
.OfType<AssemblyTitleAttribute>()
.FirstOrDefault();
_name = attribute != null ? attribute.Title : "";
}
return _name;
}
}
private string _name;
}
为了用作:
<a href="server/App?appName=<% App.Name %> />
我看到你的项目是一个网站。
问题是,网站生成的每个文件夹,你有他们的DLL。这是各种App_Web_asdkfjh.dll。
如果您发布网站,VS会将所有这些DLL组合成一个。您可以在部署项目的属性中将您想要的名称命名,甚至包括项目名称。
如果没有部署项目,则会遇到随机查找的文件名。
我应该注意到这一点,但我正在寻找将单线解决方案添加到标签。基本上,
要使它成为单行,您必须将其作为静态方法放入静态类中......请参阅示例 –