5
我的CompileAssemblyFromSource適用於只引用我的程序(編譯它)使用的程序集的代碼。它的作品非常漂亮。C#CompileAssemblyFromSource,添加它需要的引用程序集?
但是,如果我需要編譯具有「使用等等」的代碼,聲明,它將無法找到它,並說它缺少一個資源。
因此,如果它是「System.Windows.Forms」,我說「compilerparams.ReferencedAssemblies.Add(」System.Windows.Forms.dll「)」,它的工作原理。
所以我可以解析代碼文件並獲取所有「使用」參數,但是如何知道這些應該是「* .dll」的添加項,或者它們是其他位置的名稱空間還是什麼?有沒有辦法讓.NET接受「System.Windows.Forms」並吐出「System.Windows.Forms.dll」,因爲這就是它所需要的,等等。
無法找到程序集包含您的類,因爲名稱空間可以產生acr oss的asseblies和某人可以創建具有完全相同的類名稱和您使用的命名空間的DLL,所以你的代碼無法編譯。爲了解決一個問題,你必須提供二進制文件,比如說衛星程序集,以同樣的方式作爲參考以及你的源代碼,Visual Studio保存引用(包括哈希) –
'Assembly.GetAssembly(typeof (的MyType))'??你必須知道哪些類型實際上正在使用,而不僅僅是使用語句,因爲單個命名空間可以來自多個程序集,每個@ArturMustafin – mellamokb
@mellamokb:如果你的代碼如下所示:'Assembly.GetAssembly(typeof(MyType) )',這意味着類型'MyType'在complie時間是已知的(typeof'語句需要使用),無論是代碼本身還是編譯源代碼,情況並非如此。你的情況,你必須提供解決方法的AppDomain.AssemblyResolve事件處理程序來查找和下載程序集。但是,無論如何,正如所說的,你不能只依靠源代碼來解決問題。 –