29

我一直在环顾四周,但没有找到解决这个问题的方法:我想创建一个类库,该类库在名为 Configuration 的子目录下有一个配置文件。我希望将该类库部署在任何地方,并且我希望它通过知道自己的位置来找到它的配置文件。

以前的尝试Assembly.GetExecutingAssembly().Location没有奏效。
它将返回临时位置,例如

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\7c00e0a3\38789d63\assembly\dl3\9c0a23ff\18fb5feb_6ac3c901

而不是想要的

bin/Configuration小路。

所以:

  1. 类库可以知道自己在磁盘上的位置吗?
  2. 我将如何着手编写此功能的测试脚本,因为似乎目录会根据您运行应用程序的方式而变化(在 VS 中调试、在 IIS 上部署等)
4

3 回答 3

46

这应该工作 -

string assemblyFile = (
    new System.Uri(Assembly.GetExecutingAssembly().CodeBase)
).AbsolutePath;
于 2009-04-22T17:10:46.353 回答
2

下面的代码为我获取了类库文件中的图像文件夹的物理路径。

string fullFilePath = Path.Combine((new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath.Split(new string[] { "/bin" }, StringSplitOptions.None)[0]
                          , "@/Images/test.png");

我希望,它会帮助某人。

于 2020-03-19T14:05:31.763 回答
0

老问题,但为新观众回答。只需访问该文件。我通过动态设置目录尝试了多种方法,但没有积极的结果。但另一方面,我看到它会自动访问其目录/子目录中的文件,而无需显式调用任何方法来获取当前目录。

[我的案例] 我不得不访问一个与类库一起存储的配置文件,我可以直接访问它而无需指定或设置地址。

于 2020-11-03T18:19:13.877 回答