C# 在C中向DLL添加资源(XML)#
我必须遵循项目结构 /build-out/MyApp.dll /dependencies/ResFile.xml /src/MyFile.cs /buildout/MyApp.dll /依赖项/ResFile.xml /src/MyFile.cs 在MyFile.cs中,我想打开/dependencies目录中的我的ResFile.xml,并根据需要阅读它。所有这些在Visual Studio中都像一个魔咒,但当我创建一个dll并将其与另一个应用程序(作为外部库)一起使用时,我会收到一个错误,因为它找不到dependencies/ResFile.xml文件C# 在C中向DLL添加资源(XML)#,c#,visual-studio,visual-studio-2008,dll,resources,C#,Visual Studio,Visual Studio 2008,Dll,Resources,我必须遵循项目结构 /build-out/MyApp.dll /dependencies/ResFile.xml /src/MyFile.cs /buildout/MyApp.dll /依赖项/ResFile.xml /src/MyFile.cs 在MyFile.cs中,我想打开/dependencies目录中的我的ResFile.xml,并根据需要阅读它。所有这些在Visual Studio中都像一个魔咒,但当我创建一个dll并将其与另一个应用程序(作为外部库)一起使用时,我会
那么,如何将resorce文件添加到resultMyApp.dll文件中呢?有一些关于StackOverflow的文章,但有一些快速注释和代码
foreach (string resource in Assembly.GetExecutingAssembly().GetManifestResourceNames())
{
if (resource.EndsWith("Snippet.htm"))
{
Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource);
byte[] buff = new byte[s.Length];
s.Read(buff, 0, buff.Length);
string snippet = Encoding.UTF8.GetString(buff);
}
}
在用户机器上部署应用程序后,您将遇到更大的问题。没有项目目录。一个简单的解决方案是只需将.xml文件复制到与.exe相同的目录中,这样查找它就不会有问题。或者将其作为真正的资源嵌入。Project+属性,Resources选项卡。@HansPassant,是否有任何方法将库的“非dll”依赖项包含到宿主项目中,以便无需重新编译库即可更改这些依赖项(例如文本文件)。(如果是嵌入式资源,我们需要在更改(txt)文件时重新编译库)@ANewGuyInTown这里一个潜在的解决方案是在dll中嵌入一个默认文件,如果不存在,则使用该文件创建磁盘上的文件。然后从用户可以编辑的磁盘文件加载。如果从program files目录(exe位置)加载,您可能需要管理员权限,因此可以改为查看标准应用程序数据目录。如何在不生成和嵌入资源的情况下执行此操作?换句话说,更改可以在文件中发生,而无需重新编译dll。