2013-08-20 26 views
5

Câu hỏi của tôi là về một Fluent, mà tôi sáp nhập với program.exe của tôi trong một merged.exe với mã này:vấn đề sau khi sáp nhập thạo vào main.exe

public class Program 
    { 
     [STAThreadAttribute] 
     public static void Main() 
     { 
      AppDomain.CurrentDomain.AssemblyResolve += OnResolveAssembly; 
      App.Main(); 
     } 

     private static Assembly OnResolveAssembly(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; 
     } 
    } 

Vấn đề của tôi là Ribbon kiểm soát thạo không thể tìm thấy bất kỳ phong cách, nhưng tôi giải quyết nó với họ mã trong App.xaml tôi

<Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="pack://application:,,,/Fluent;Component/Themes/Office2010/Silver.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 

vấn đề thứ hai mà tôi có với giải pháp này là tôi không thể kết nối với cơ sở dữ liệu của tôi (SQL Express) với chương trình của tôi khi tôi bắt đầu nó mà không có Visual Studio.

Khi tôi có thông thạo trong cùng một thư mục nó chỉ hoạt động, bởi vì sau đó nó không tải nó từ thông thạo được tham chiếu nhúng. Và Fluent có thể tìm thấy phong cách quá.

Có ai có trải nghiệm tương tự với việc hợp nhất dll/fluent vào main.exe và bạn có thể chỉ cho tôi cách bạn giải quyết nó không?

+1

Vì vậy, ... bạn đã thêm bản lắp ráp dưới dạng tài nguyên * vào ứng dụng của bạn và đang tải nó khi chạy? Tại sao không chỉ thêm nó dưới dạng tham chiếu **, và đặt 'Sao chép địa phương' thành true? –

Trả lời

1

Sử dụng Fody.Costura thay vào đó, điều đó phù hợp với tôi (và tôi cũng sử dụng Thông thạo).

https://github.com/Fody/Costura

Một trong những điều quan trọng là để cho ứng dụng của bạn biết rằng nó phải tải lắp ráp. Những gì tôi đôi khi làm để buộc tải là điều này trong khởi động ứng dụng của bạn:

Console.WriteLine (typeof (Fluent) .Name);

Các vấn đề liên quan