c 動態生成程式集dll

2022-09-24 00:06:14 字數 1099 閱讀 4160

動態生成程式集,指定版本號,如果需要引用程式集,可以新增乙個類的**,可以是個空類,也可以將一些檔案嵌入到dll裡。

csharpcodeprovider codeprovider = new

csharpcodeprovider();

system.codedom.compiler.compilerparameters parameters = new

compilerparameters();

parameters.referencedassemblies.add(

@"system.dll");

parameters.generateexecutable = false

; parameters.generateinmemory = false

;\\task\\

" + $"

.dll";

parameters.embeddedresources.add(zipfilename);

compilerresults results = codeprovider.compileassemblyfromsource(parameters, @"

using system;

using system.reflection;

[assembly: assemblyversion(""1.0.0.0"")]

[assembly: assemblyfileversion(""1.0.0.0"")]

namespace

" + projectassemblename + @"

}");

如果程式需要引用該程式集,或者需要獲取該程式集可以先引用乙個類,這樣程式集就會載入到主程式域中,如果只是引用了程式集,**裡沒有引用程式集的元資料,程式集不會載入到主程式域中

referenced project = new referenced();//

引用任務dll,載入任務程式集

可以通過這種方式獲取引用的程式集

, version=1.0.0.0, culture=neutral, publickeytoken=null

");

通過Roslyn動態生成程式集

之前寫過篇文章如何通過roslyn構建自己的c 指令碼,今天本來打算測試一下這部分api在新的版本中的變化,結果發現它的指令碼引擎找不到了,翻了一下官方文件,貌似說暫時性的移除了。便看了一下它動態生成程式集的api,這裡簡單的介紹一下使用方法。首先需要在nuget中新增codeanalysis的引用...

動態呼叫DLL時不能載入依賴的程式集

假設有2個dll,class1和class2.class1引用class2,並呼叫class2裡的方法。namespace feiyun0112.cnblogs.com namespace feiyun0112.cnblogs.com 如果我們動態呼叫class1裡的方法,會報無法載入 class2...

C 生成標準dll

c 生成的dll,是託管的dll,是由中間語言夠成的,和普通的dll是不同的。如果是vb.net的話應該可以使用,如果是先前版本的話,除了安裝.net framework之外,還要進行封裝。一般大家都封裝成com元件。編譯專案前,先設定 專案 屬性 生成 下的 為com interop 註冊 打上勾...