[英]how to get publish version?
我也遇到了這個問題,發現AssemblyInfo.cs
中設置的版本號干擾了Properties
設置的版本號:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
我通常會將這些行注釋掉AssemblyInfo
並將其替換為
[assembly: AssemblyVersion("1.0.*")]
檢查這些值是否已硬編碼到AssemblyInfo
文件中。
有關自動版本控制的有趣討論,請參閱此SO問題 。 檢查AssemblyInfo.cs
,請確保自動增量( *
- 如果使用它)僅針對AssemblyVersion
而不是AssemblyFileVersion
。
調試程序時,可以檢查程序集的屬性
\bin\Release\app.publish
在“ Details
選項卡下,檢查版本號。 這是否與您在VS中指定的任何設置相匹配?
我們可以創建一個屬性,它將返回如下所述的版本信息,我們可以使用該屬性。
public string VersionLabel
{
get
{
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
Version ver = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
return string.Format("Product Name: {4}, Version: {0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision, Assembly.GetEntryAssembly().GetName().Name);
}
else
{
var ver = Assembly.GetExecutingAssembly().GetName().Version;
return string.Format("Product Name: {4}, Version: {0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision, Assembly.GetEntryAssembly().GetName().Name);
}
}
}
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
將獲得AssemblyInfo.cs文件中存在的程序集版本,以獲取您在發布對話框中設置的發布版本,您應該使用
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion
但請注意,您必須添加對System.Deployment的引用,並且只有在通過右鍵單擊項目文件並單擊“發布”來發布應用程序后,它才會起作用,每次發布時,它都會增加“修訂”。
如果您嘗試在調試模式下調用上面的行,它將無法工作並將拋出異常,因此您可以使用以下代碼:
try
{
return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
}
catch(Exception ex)
{
return Assembly.GetExecutingAssembly().GetName().Version;
}
將C#6.0與Lambda表達式一起使用
private string GetVersion => ApplicationDeployment.IsNetworkDeployed ? $"Version: {ApplicationDeployment.CurrentDeployment.CurrentVersion}" : $"Version: {Application.ProductVersion}";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.