2013-01-17 40 views
3

我有如下文件AssemblyInfo.cs。我想定義的String的AssemblyVersion:命名空間不能直接在AssemblyInfo.cs中包含成員

string version = "1.2.0.0"; 

,但我得到一個錯誤說:

命名空間不能直接包含成員

我該怎麼辦呢?

using System.Reflection; 
using System.Runtime.InteropServices; 

// Setting ComVisible to false makes the types in this assembly not visible to COM components 
[assembly: ComVisible(false)] 

// The following GUID is for the ID of the typelib if this project is exposed to COM 
[assembly: Guid("24f53cr8-552b-40d3-cds1-13e310ds6c3f")] 

[assembly: AssemblyCopyright("1/10/2013")] 

#if (DEVELOPMENT) 
[assembly: AssemblyProduct("ShellDev")] 
[assembly: AssemblyConfiguration("DEVELOPMENT")] 
[assembly: AssemblyTitle("MMD Smart Client - Development Version")] 
[assembly: AssemblyVersion("1.2.0.0")] 
#endif 

#if (RELEASE) 
[assembly: AssemblyProduct("Shell")] 
[assembly: AssemblyTitle("MMD Smart Client")] 
[assembly: AssemblyVersion("1.2.0.0")] 
#endif 
+0

這的AssemblyVersion似乎罰款。你確定這個錯誤是指你的AssemblyInfo.cs文件嗎?如果您還原AssemblyVersion,錯誤會消失嗎? – JLRishe

回答

10

C#中沒有全局變量。將該字符串放在靜態類中。

internal static class Version 
{ 
    public const string VersionString = "1.2.0.0"; 
} 

,然後用它是這樣的:

[assembly: AssemblyVersion(Version.VersionString)] 
+1

謝謝。請注意,內部類必須在[assembly ...]語句之後。 – numberwang

+0

也許'公開只讀字符串...'比較好?我讀過,如果你正在構建的東西將被用於其他程序,並且你使用const,那麼變量將被內聯,你需要重建。而如果您只使用readonly,則變量不會被內聯,實際的信息將在運行時獲得。 – Destrictor

+2

屬性參數必須是常量表達式,所以'readonly'不起作用。它會給你一個編譯器錯誤。 – bitbonk

相關問題