내 프로젝트가 이미 사용 된 솔루션 이름 아래에 있다는 것을 알고 나면 전체 솔루션의 이름을 바꾸기로 결정했습니다. 내 홈페이지와 애플리케이션 자체에서 소스 코드를 공유하고 이미 존재하는 다른 프로젝트의 복사본처럼 사용자에게 보이고 싶지 않기 때문에 그렇게해야합니다. C# + SharpDevelop : 루트 네임 스페이스를 변경 한 후 resourcemanager를 망쳤습니까?
내가 너무 좋아 모든 파일의 모든 네임 스페이스뿐만 아니라 "을 NewName"에의 AssemblyName, 루트 네임 스페이스와 "만일 oldname"에서 ResourceManager에 인스턴스 호출 변경 : 그 일을 한 후resManager = new ResourceManager("NewName.Resources.Manifest", System.Reflection.Assembly.GetExecutingAssembly());
을, 나는 다시 컴파일하는 어떤 오류없이 일했다. 불행히도 resManager.GetString();
메서드를 호출 할 때 System.Resources.MissingManifestResourceException
으로 런타임 오류가 발생합니다. 따라서 응용 프로그램은 더 이상 자원을 볼 수 없습니다. 하지만 왜?
폴더 구조 및 기타 모든 소스 파일이 변경되지 않았습니다. 백업을 복원하고 resourcemanager
뿐만 아니라 루트 네임 스페이스를 간단하게 변경할 수 없다는 것을 알아 냈습니다. 내가 모르는 뭔가가 있어야합니다.
어떤 도움이 큰 :-) 여기에
될 것은 내가 뭘하는지입니다 :
namespace NewName
{
//...
ResourceManager resManager;
CultureInfo cultureInfo;
Settings settingsFromFile = new Settings();
settingsFromFile.readSettings();
if (settingsFromFile.Language == "german")
cultureInfo = new CultureInfo("de");
else
cultureInfo = new CultureInfo("en");
resManager = new ResourceManager("NewName.Resources.Manifest", System.Reflection.Assembly.GetExecutingAssembly());
//...
contextMenuStripDoFencyStuff.MenuItems.Add(resManager.GetString("contextMenuStripDoFencyStuffText",cultureInfo)); <-- this is where the exception occurs
}
RESX 파일의 이름은 및 "Manifest.de.resx"입니다 " Manifest.en.resx ". 이 파일들은 "ProjectFolder/Resources /"/에 있습니다.