動態生成程式集,指定版本號,如果需要引用程式集,可以新增乙個類的**,可以是個空類,也可以將一些檔案嵌入到dll裡。
csharpcodeprovider codeprovider = newcsharpcodeprovider();
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 註冊 打上勾...