2014-07-04 26 views
6

Hem Asp.Net web uygulaması hem de windows hizmeti uygulamasını içeren bir proje üzerinde çalışıyorum. Bu ikisi, yalnızca kaynak dosyaları içermek üzere oluşturduğum karşılıklı bir proje kullanabilir. Kaynak dosyalarını meclisin dışına çıkarmak istedim, böylece onları değiştirmek istediğimde tüm çözümleri derlemeksizin düzenlenebilirlerdi. Bir yöntem ararım ve burada bir tane bulurum;C# Okuma kaynağı .resx dosyası derleme dışında atıyor MissingManifestResourceException

ASP.NET Resourcemanager to read local .resx

Bu web uygulaması üzerinde mükemmel çalıştı, ama ben gördüm bir süre sonra, pencereler hizmeti uygulama kaynaklarının olduğunu okuyamıyor ve ben sorunu nedeniyle anlamıyorum

System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture (or the neutral culture) on disk. 
baseName: abc locationInfo: <null> fileName: abc.resx 
    at System.Resources.FileBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark) 
    at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark) 
    at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) 
    at System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream) 
    at System.Resources.ResourceManager.GetObject(String name, CultureInfo culture) 
    at yyyy.yyyyyy.yyyyyyy.GetGlobalResourceObject(String classKey, String resourceKey, Boolean getCommon) 
    at xxx.xxx.xxx.Entities.xxxxxxxx.get_LocalizedName() 
    at yyyyy.Adapters.ArchiverDtoAdapter.CreateArchiverInjectionsDto(InjectionProcedure procedure, INamingService namingService) 
    at yyyyy.Adapters.ArchiverDtoAdapter.ConvertInjectionProcedureDto(InjectionProcedure procedure, INamingService namingService) 
    at yyyy.Factories.ArchiverDtoFactory.<>c__DisplayClass1.<CreateInjectionProcedureSendRequestDto>b__0(IUnitOfWork unitOfWork) 
    at Core.Data.NHibernate.Factory.UnitOfWorkFactoryBase.Create(Action`1 action, IUnitOfWork unitOfWork) 
    at Core.Data.NHibernate.Factory.UnitOfWorkFactory.Create(Action`1 action) 

var, Proje düzgün çalışıyor ve diğeri değil. Diğer garip davranış, ne olduğunu görmek için makinemdeki hizmeti başlattığımda, ne olduğunu görmek için çalışıyor.

Güncelleme

: Bu

public class ResxResourceManager : ResourceManager 
    { 
     public ResxResourceManager(string baseName, string resourceDir) 
     { 
      ObjectFactory.ResolveDependencies(this); 

      Type[] paramTypes = new Type[] { typeof(string), typeof(string), typeof(Type) }; 
      object[] paramValues = new object[] { baseName, resourceDir, typeof(ResXResourceSet) }; 

      Type baseType = GetType().BaseType; 

      ConstructorInfo ci = baseType.GetConstructor(
       BindingFlags.Instance | BindingFlags.NonPublic, 
       null, paramTypes, null); 

      ci.Invoke(this, paramValues); 
     } 

     protected override string GetResourceFileName(CultureInfo culture) 
     { 
      string resourceFileName = base.GetResourceFileName(culture); 
      return resourceFileName.Replace(".resources", ".resx"); 
     } 
    } 
+0

Assembly' 'yöntemi ile yapılır: Eğer kaynak içeren montaj için bir örneğini gerekir: bu yüzden montaj kullandığınız hangi görebilirsiniz kodunuzu gösterin. – Richard

+0

Merhaba Richard, sorun artmaktadır çünkü kaynakları depolamak için derlemeyi kullanmak istemiyorum. Soruda verdiğim linkte önerildiği gibi 'ResxResourceManager' ı yarattım. Parametrelerin yanlış olup olmadığını kontrol ediyorum ama kültür, dizin ve dosya adı doğru şekilde verildi. – ertanergun

+0

Şapka koduna bakarak: kendi görüşünde kendi taban sınıfının yapıcısını * kendi başına * yansıtma kullanıyor. En iyi ihtimalle kırılgan kod olacak (başvurulan A güncellemesinden bu yana geçen dört yıl içinde bu durumu kırmış olabilir). Neden doğrudan [o ctor] (http://msdn.microsoft.com/en-us/library/e5dsaw4c.aspx) 'i çağırmıyorsunuz? Muhtemelen bu çalışmayı küçük odaklı bir prototipte (örn. NHibernate veya UI) işe almaya değer. – Richard

cevap