在构建C#应用程序后添加/替换资源
我有一个C#应用程序,它将exe文件和脚本作为嵌入式资源存储在.resx文件中 我正试图找到一种方法,在不进行完全重建的情况下替换嵌入式资源。这样,当脚本或可执行文件进行版本控制时,我只需要交换它们,而不是进行完整的重建 到目前为止,我已经找到了可以向可执行文件添加和替换资源(卫星资源?)的方法,但我还无法在我的C#应用程序中访问这些资源 到目前为止,我只找到了一种访问嵌入式资源的方法,我在构建之后附加的资源没有显示出来在构建C#应用程序后添加/替换资源,c#,C#,我有一个C#应用程序,它将exe文件和脚本作为嵌入式资源存储在.resx文件中 我正试图找到一种方法,在不进行完全重建的情况下替换嵌入式资源。这样,当脚本或可执行文件进行版本控制时,我只需要交换它们,而不是进行完整的重建 到目前为止,我已经找到了可以向可执行文件添加和替换资源(卫星资源?)的方法,但我还无法在我的C#应用程序中访问这些资源 到目前为止,我只找到了一种访问嵌入式资源的方法,我在构建之后附加的资源没有显示出来 // This only retrieves the co
// This only retrieves the contents of embedded .resx files
System.Reflection.Assembly thisExe;
thisExe = System.Reflection.Assembly.GetEntryAssembly();
// List files in .resx of known name.
ResourceSet rs = <my resource>.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentUICulture, true, true);
Dictionary<string, object> resources = rs.Cast<DictionaryEntry>().ToDictionary(r => (string)r.Key, r => r.Value);
foreach (string key in resources.Keys)
Console.WriteLine(key);
//这仅检索嵌入的.resx文件的内容
System.Reflection.exe;
thisExe=System.Reflection.Assembly.GetEntryAssembly();
//在.resx中列出已知名称的文件。
ResourceSet rs=.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentUICulture,true,true);
Dictionary resources=rs.Cast().ToDictionary(r=>(string)r.Key,r=>r.Value);
foreach(resources.Keys中的字符串键)
控制台。写入线(键);
资源在应用程序的整个生命周期中都是静态的,如果您使用的是脚本(基于文本)和exe文件,我会将它们保存在普通文件中。如果您想保护它们不被修改,您可以在运行它们时始终对它们进行加密/解密。修改Resx文件是一件痛苦的事情,因为它需要在客户端计算机上安装其他组件(您没有注意到,因为您有Visual Studio)。很抱歉,我不清楚,这些文件在可执行文件发布后是静态的。我只想在最后一刻脚本发生变化的情况下,在发布之前能够替换其中的一些脚本。这个问题仍然有效吗?你找到答案了吗?我目前正在尝试类似的方法。(差不多)。我知道如何阅读嵌入式(卫星?)资源,但我不知道如何将其添加到VisualStudio之外。要读取嵌入式程序集,需要使用assembly.GetManifestResourceStream(字符串名称)
函数。但您可能无法将此程序集作为标准资源访问,而只能作为二进制文件访问。但是,您可以加载另一个DLL并通过函数从嵌入的DLL读取资源。