2016-06-09 64 views
1

我們正在爲嵌入式Linux中的C庫構建一個C#封裝器,並且我們希望將其安裝到目標系統的GAC中。創建強大的命名程序集時的版本0.0.0.0

爲了做到這一點,我用sn創建密鑰對和mcs編譯代碼:

sn -k keypair.snk 
mcs /target:library -keyfile:keypair.snk -out:MyLib.dll src/*.cs 

現在,一旦這樣建成,我用gacutil將其與注入GAC:

gacutil /i -gacdir /path/to/gac MyLib.dll 

我最終得到的是正確的文件結構,但版本號設置爲0.0.0.0

.../usr/lib/mono/gac/MyLib 
.../usr/lib/mono/gac/MyLib/0.0.0.0__3141592653589fff 
.../usr/lib/mono/gac/MyLib/0.0.0.0__3141592653589fff/MyLib.dll 

我希望包裝的版本與正在使用的底層C代碼的版本相匹配,所以我的問題是(希望)是一個簡單的問題。當前版本從哪裏來,我如何得到它(例如)3.14.15.9

回答

3

將一個名爲AssemblyVersion的程序集屬性添加到您的C#源代碼中。這是通常在一個名爲AssemblyInfo.cs文件補充說:

注:這是一個自動生成的項目文件的剪切/粘貼,我更新了的AssemblyVersion屬性,你只需要包括你想要的CIL屬性裝配包含

using System.Reflection; 
//using System.Runtime.CompilerServices; 

// Information about this assembly is defined by the following attributes. 
// Change them to the values specific to your project. 

[assembly: AssemblyTitle("Sushi.Task.Lib")] 
[assembly: AssemblyDescription("")] 
[assembly: AssemblyConfiguration("")] 
[assembly: AssemblyCompany("SushiHangover")] 
[assembly: AssemblyProduct("")] 
[assembly: AssemblyCopyright("SushiHangover - 2016")] 
[assembly: AssemblyTrademark("SushiHangover")] 
[assembly: AssemblyCulture("")] 

// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 
// The form "{Major}.{Minor}.*" will automatically update the build and revision, 
// and "{Major}.{Minor}.{Build}.*" will update just the revision. 

[assembly: AssemblyVersion("3.14.15.9")] 

// The following attributes are used to specify the signing key for the assembly, 
// if desired. See the Mono documentation for more information about signing. 

//[assembly: AssemblyDelaySign(false)] 
//[assembly: AssemblyKeyFile("")] 

該源文件添加到您正在編譯別人。

安裝:

>gacutil /i Sushi.Task.Lib.dll 

和檢索的細節:

>gacutil /l |grep -i sushi 

Sushi.Task.Lib, Version=3.14.15.9, Culture=neutral,.... 

文件系統:

ls -Rl /Frameworks/Mono.framework/gac | grep -i sushi 
drwxr-xr-x 3 root admin 102 Jun 8 20:25 Sushi.Task.Lib 
/Frameworks/Mono.framework/gac/Sushi.Task.Lib: 
/Frameworks/Mono.framework/gac/Sushi.Task.Lib/3.14.15.9__629e3fd32ae394a7:..... 
+0

該訣竅。謝謝。 – paxdiablo

相關問題