它试图找到的程序集不是根程序集 - 它是引用的程序集,但它位于同一文件夹中,而Directory.GetCurrentDirectory()是包含所有文件的文件夹。
我被困 - 任何建议?
答案 0 :(得分:3)
你可以:
AppDomain
以加载程序集(并将AppDomain
的基目录设置为包含所有程序集的目录。)AppDomain.AssemblyResolve
的处理程序以帮助CLR找到程序集的依赖项。答案 1 :(得分:0)
你可以尝试使用类似的东西
string myDll = string.Empty;
string location = Assembly.GetExecutingAssembly().Location;
if (location != null)
{
myDll = string.Format(@"{0}\my.assembly.name.dll", location.Substring(0, location.LastIndexOf(@"\")));
}
这应该得到程序集正在运行的物理目录。这可能在Windows .NET临时目录中。但是,因为文件处于同一级别,所以它们应该并排存在。
答案 2 :(得分:0)
如果使用assembly.loadfrom,则可以指定程序集的文件路径。
load-from上下文允许 要从没有路径加载的程序集 包含在探测中,但允许 对要找到的路径的依赖关系 并加载因为路径 信息由。维护 上下文。
答案 3 :(得分:0)
从具有引用的dll的文件夹执行程序也可以解决问题。