2014-11-10 25 views
5

Roslyn kullanarak derlediğim dll'ye yerleşik bir kaynak eklemeyi deniyorum. Ben aşağıdaki kodu kullanarak dll oluştururken, here.Roslyn tarafından oluşturulmuş bir derlemede gömülü bir kaynak da dahil olmak üzere

Ancak doğru yolda beni koy yardımcı şey buldum: Ben birim testlerin hepsi geçecek bulmak

const string resourcePath = @"C:\Projects\...\Properties\Resources.resources"; 
var resourceDescription = new ResourceDescription(
        "Resources.resources", 
        () => File.OpenRead(resourcePath), 
        true); 

var result = mutantCompilation.Emit(file, manifestResources: new [] {resourceDescription}); 

ben Kaynaklar dosyasına dayananlar hariç, proje için oluşturduk.

System.Resources.MissingManifestResourceException ... Make sure "[Project].Properties.Resources.resources" was correctly embedded or linked into  
assembly "[Project]" at compile time, or that all the satellite assemblies required are loadable and fully signed. 

dll imzalanması gerekiyordu ve bu Roslyn yaydığı zaman doğru ortak anahtarla çıkıyor:

hata aşağıdaki gibi görünüyor alıyorum. Ayrıca, Resource.resx projemde doğrudan Özellikler klasöründe bulunur.

Kimsenin sağlayabileceği herhangi bir yardım için minnettarım.

+0

Yaptığım daha fazla araştırmayı yansıtmak için sorumu düzenledim. –

cevap

6

Tamam, yanıt ararken, kaynak akışının ad alanını ekleyene kadar null olarak yorumlandığı this web page ile karşılaştım.

Yani ad ekledikten sonra ben beklediğiniz tam gibi çalışan bu

const string resourcePath = @"C:\Projects\...\Properties\Resources.resources"; 
var resourceDescription = new ResourceDescription(
       "[namespace].Resources.resources", 
       () => File.OpenRead(resourcePath), 
       true); 

var result = mutantCompilation.Emit(file, manifestResources: new [] {resourceDescription}); 

gibi somehting aldık.