如何在运行时获取程序集路径,在Web服务器、服务或win应用程序中运行

本文关键字:服务 win 应用程序 运行 服务器 Web 运行时 获取 程序集 路径 | 更新日期: 2023-09-27 18:01:10

我有一个资源项目,用于我们产品的各个部分。为了使其更加灵活,我决定将.resx从使用resgen工具处理的dll外部放置,以允许用户动态添加自己的语言文件。由于该项目将从不同的地方访问,web,服务或独立的winForm,我如何获得.dll所在的路径,以便为提供正确的路径

[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    public static global::System.Resources.ResourceManager ResourceManager {
        get {
            if (object.ReferenceEquals(resourceMan, null)) {
                temp = ResourceManager.CreateFileBasedResourceManager("Resources", cwd, null); 
                resourceMan = temp;
            }
            return resourceMan;
        }
    }

我可以对路径进行硬编码,而且效果很好,尽管我宁愿让它在运行时计算出路径。

我试过这样的东西,但它不起作用

string fullPath = System.Reflection.Assembly.GetAssembly(typeof(Resources)).Location;
//get the folder that's in
string theDirectory = Path.GetDirectoryName(fullPath); ResourceManager temp =
"Could not find any resources appropriate for the specified culture (or the neutral culture) on disk.

baseName:Resources locationInfo:fileName:Resources.Resources">

如何在运行时获取程序集路径,在Web服务器、服务或win应用程序中运行

在中发现以下内容

如何获取代码所在程序集的路径?

string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
var path = Uri.UnescapeDataString(uri.Path);
var theDirectory = Path.GetDirectoryName(path);