Что вы читаете в Обозревателе решений полностью не связано с скомпилированным именем сборки или заголовком сборки. Кроме того, он не будет записан нигде в вашей сборной сборке, чтобы вы не могли получить доступ к этому имени из кода.
Предполагая MyType
это тип, определенный в сборке вы можете использовать AssemblyTitleAttribute
атрибут (обычно определенный в AssemblyInfo.cs
) читать данное название (не связанное с скомпилированного имени сборки или кода пространства имен):
var assembly = typeof(MyType).Assembly;
var attribute = assembly
.GetCustomAttributes(typeof(AssemblyTitleAttribute), true)
.OfType<AssemblyTitleAttribute>()
.FirstOrDefault();
var title = attribute != null ? attribute.Title : "";
Это (AssemblyTitleAttribute
) является лишь одним из атрибутов, определенных в AssemblyInfo.cs
, выберите тот, который наилучшим образом соответствует вашим требованиям.
С другой стороны вы можете использовать имя сборки (Name
property from Assembly
), чтобы получить скомпилированное имя сборки (опять же это может отличаться от названия сборки и названия проекта).
EDIT
Чтобы сделать это одну строку вы должны положить его где-то в вашем коде (конечно же!):
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 %> />
Я должен был заметить это, но я ищу однолинейное решение, которое будет добавлено в тег . В принципе,
Чтобы сделать его одной строкой, вы должны ставить его как статический метод внутри статического класса ... см. Пример –