我知道有很多人回覆此話題,但我對這個回信中示例代碼不工作的每一個.dll文件合併C#DLL的成.EXE
我以前this例子。
public App()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ResolveAssembly);
}
static Assembly ResolveAssembly(object sender, ResolveEventArgs args)
{
//We dont' care about System Assemblies and so on...
if (!args.Name.ToLower().StartsWith("wpfcontrol")) return null;
Assembly thisAssembly = Assembly.GetExecutingAssembly();
//Get the Name of the AssemblyFile
var name = args.Name.Substring(0, args.Name.IndexOf(',')) + ".dll";
//Load form Embedded Resources - This Function is not called if the Assembly is in the Application Folder
var resources = thisAssembly.GetManifestResourceNames().Where(s => s.EndsWith(name));
if (resources.Count() > 0)
{
var resourceName = resources.First();
using (Stream stream = thisAssembly.GetManifestResourceStream(resourceName))
{
if (stream == null) return null;
var block = new byte[stream.Length];
stream.Read(block, 0, block.Length);
return Assembly.Load(block);
}
}
return null;
}
當我創建了一個小的程序,只有一個窗口和一個比唐它有工作,但我的「大」 DLL它說好的工作。 「big」dll的設置與我的小程序中的設置相同。
我無法想象它爲什麼有時有效,有時它不工作。我也用ICSharp.AvalonEdit.dll測試過,不成功。
任何人都可以想象錯誤在哪裏?
編輯1
當我開始我的程序它說,它不能找到我的DLL。
編輯2
我想我得到了我的問題的核心。如果其中一個dll的,我想要合併包含對其他dll的引用,則會發生這種情況,例如:FileNotFoundException
。難道有人知道如何加載當我使用從吉日波拉塞克代碼它適用於一些/還加了內部所需的dll的
編輯3
。我Fluent顯示錯誤「請附上與風格的ResourceDictionary但我不得不在已經這樣做了我的App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Fluent;Component/Themes/Office2010/Silver.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
使用你的代碼後,我遇到了一些麻煩。請顯示[這裏](http://stackoverflow.com/questions/18328483/problems-after-merging-fluent-into-main-exe) –