1

我有一个名为“fAgent.dll”的类库,我在两个应用程序中使用这个 dll 文件。一个应用程序是桌面应用程序,另一个是网络应用程序。此 dll 文件必须读取 bin 文件或 xml 文件。我可以像这样在桌面上打开 bin 文件:

FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\MyApp\\ConnSettings.bin", FileMode.Open);

如果 dll 找不到 bin 文件,它会尝试读取这样的 xml 文件:

XmlDocument doc = new XmlDocument();
var path = (new System.Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;
doc.Load(path + "\fCns.xml");

在 FileNotFoundException 上,它尝试以下代码:

XmlDocument doc = new XmlDocument();
System.Reflection.Assembly asm = System.Reflection.Assembly.GetAssembly(typeof(fAgent.Tools));
string asmPath = asm.CodeBase;
doc.Load(asmPath.Replace("fAgent.DLL", "fCns.xml"));

xml 文件和 dll 文件在同一个文件夹中。它可以在桌面上运行,但不能在网络上运行。我必须在不使用 Mappath 功能的情况下获取网络上的“~/bin”文件夹。我怎样才能做到这一点?

感谢您的回答。

4

1 回答 1

1

使用HttpRuntime.BinDirectory属性甚至更好 - 将文件放入App_Data文件夹而不是 bin 中,就像您将修改 bin 文件夹中的文件一样,应用程序将重新启动

var filePath = System.IO.Path.Combine(HttpRuntime.BinDirectory, "ConnSettings.bin");
于 2012-08-17T09:35:11.297 回答