我是打包資源;我使用ResourceManager.CreateFileBasedResourceManager從.resource文件成功加載它們。我想用這些資源創建dll文件,並用Assembly.LoadFrom加載它們;然後使用新的ResourceManager(string,Assembly)加載資源。當我這樣做時,我得到:構建純資源DLL(帶al.exe)正在提升「程序集由比當前加載的運行時更新的運行時構建」
「程序集由比當前加載的運行時更新的運行時構建」。
該項目是一個類庫;並且它像「插件」一樣在「主機」內部分發和運行。主機運行.Net 3.5。我的VS項目被配置爲目標3.5 ...我實際上正在手動運行al.exe來構建DLL。
我可以在我的項目中運行測試程序(也設置爲目標3.5),我的代碼將加載程序集(並查找資源)。但是當相同的代碼在「主機」中運行時,我得到錯誤。
我已經嘗試了我可以在我的機器上找到的al.exe的每個版本;我專門下載了.NET 3.5 SDK;它似乎安裝到C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0中,但無論我運行的是哪個版本的al.exe,我都會收到錯誤。
有人可以幫助我構建dll,以便它將加載到此.NET 3.5環境中嗎? ---這又是一個純資源DLL。這些都是後期生成命令:
ResGen.exe AdResources.resx AdResources.resources
al.exe /target:lib /embed:AdResources.resources /culture:en /out:AdResources.resources.dll
我用來加載大會和資源的.cs代碼是這樣的:
string path = Path.Combine(InstallDir, "AdResources.resources.dll");
Assembly resAssembly = Assembly.LoadFrom(path);
ResourceManager temp = new ResourceManager("AdResources", resAssembly);
...作品在IDE中運行時(目標3.5 )但在最終主機平臺上失敗。
從你的代碼片斷,你很少有證據證明你正在運行正確版本的al.exe。使用ildasm.exe進行診斷,雙擊清單並查看第一行。當然,它現在說//元數據版本:v4.0.30319。錯誤的版本。您必須使用v2版本的al.exe,無論它是什麼,你都沒有提到你的VS版本。 –
感謝漢斯。我一直在尋找v2版本的al.exe。我認爲我沒有找到它。 VS版本是Community 2015 RC。我能夠下載.NET 3.5 SDK:但該版本的al.exe沒有工作。我可以在C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727中看到.NET文件夾,但它沒有al.exe(僅限此運行時?)我即將嘗試使用csc ... –
嘆了口氣,你不能用專爲業餘人士製作的工具做專業程序員的工作。微軟提供免費軟件,因爲他們知道遲早需要完整版本。它更快。 –