【问题标题】:Visual Studio looks for dll in the wrong directoryVisual Studio 在错误的目录中查找 dll
【发布时间】:2018-01-03 23:50:25
【问题描述】:

我在我的 asp.net 应用程序的浏览器中收到“无法加载文件或程序集 'Microsoft.AI.Web' 或其依赖项之一”的错误。 Microsoft.AI.Web 来自 Microsoft.ApplicationInsights.Web NuGet 包。

我注意到了这一点:

LOG: Appbase = file:///D:/Source/Workspaces/AppName/Branches/Main/Application/WT/
LOG: Initial PrivatePath = D:\Source\Workspaces\AppName\Branches\Main\Application\WT\bin

有问题的 dll 位于 D:\Source\Workspaces\AppName\Branches\Main\Application\packages\Microsoft.ApplicationInsights.Web.2.4.1\lib\net45\Microsoft.AI.Web.dll

至于个人 dll 的 -- 在项目中 --> 属性 --> 构建 --> 输出路径 --> 我将其设置为“..\Any\Debug\”。当我构建项目时,DLL 填充在那里。

我检查了 .csproj 文件中的引用和代码,所有 dll 都位于我指定的位置。

当我告诉输出在其他地方并在同一个文件夹中查找 dll(通过引用和 .csproj 文件)时,我不确定它为什么要查看项目的 bin 文件。如何让 VS 在我想要的文件夹路径中查找 dll 而不是“WT\bin”?

当我将项目输出路径更改为“bin”时,即使 dll 的路径保持不变(D:\Source\Workspaces\AppName\Branches\Main\Application\packages\Microsoft.ApplicationInsights.Web.2.4.1\lib\net45\Microsoft.AI.Web.dll),它也可以检测到 dll。

【问题讨论】:

    标签: asp.net visual-studio-2015


    【解决方案1】:

    由于它是 Microsoft 强签名 DLL,请将其添加到服务器的 GAC。

    如果您将它放在 GAC 中,它会自动找到该文件。另一个优点是,如果您在同一服务器上部署的另一个项目需要它,则无需再次部署它。

    这里有一些关于如何将 DLL 安装到服务器机器上的 GAC 中的信息,假设 gacutil 没有安装在那里。看接受的答案,而不是问题。 Drag and drop a DLL to the GAC ("assembly") in windows server 2008 .net 4.0

    将 gacutil.exe 和 gacutil.exe 配置从您的计算机复制到服务器的 C:\Windows\Microsoft.NET\Framework\v4.0.30319

    然后在服务器上运行: "C:\Windows\Microsoft.NET\Framework\v4.0.30319\gacutil.exe" /i "你的 DLL 路径"

    【讨论】:

    • 对不起,我不知道您所说的“将其添加到服务器的 GAC”是什么意思。你能详细说明一下吗?你的意思是不是将 Microsoft.ApplicationInsights.Web NuGet 包(包含 Microsoft.AI.Web)下载到 D:\Source\Workspaces\AppName\Branches\Main\Application\packages\,而是将它们移到 GAC 文件夹中C 驱动器并在引用中将 dll 指向那里?
    • 如果您的服务器的 GAC 文件夹中有 DLL,则项目文件夹中不需要它
    • 如果你把它放在 GAC 中,它会自动找到文件。另一个优点是,如果您在同一服务器上部署的另一个项目需要它,则无需再次部署。
    • 我会试试的。但这仍然不能回答我原来的问题。为什么VS在不同的文件夹中寻找dll?只要我将 dll 指向 References/.csproj 中的位置,我放置 dll 的位置应该没有什么区别吧?
    • 对于开发机器,它会在您的应用程序 bin 文件夹中查找,这是默认行为。如果您将其作为参考,则使用该选项将参考复制到输出目录。如果您在参考文献列表上按 F5,您应该将其视为一个选项。
    猜你喜欢
    • 2014-04-05
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2020-10-03
    相关资源
    最近更新 更多