我試圖獲得通過代碼項目名稱(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組合成一個。您可以在部署項目的屬性中將您想要的名稱命名,甚至包括項目名稱。
如果沒有部署項目,則會遇到隨機查找的文件名。
我應該注意到這一點,但我正在尋找將單線解決方案添加到標籤。基本上,
要使它成爲單行,您必須將其作爲靜態方法放入靜態類中......請參閱示例 –