首页 > 解决方案 > Nuget - “无法加载文件或程序集‘{类名},版本 = xxx,文化 = 中性,PublicKeyToken = null’或其依赖项之一”

问题描述

我正在使用 .NetStandard 创建一个类库,并且我从 NuGet 商店的 Selenium 包中下载了以下内容

在此处输入图像描述

现在我有一个简单的测试代码

using System;
using Operation_Forage_V2;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

public class test
{
    public static void Main(string[] args)
    {
        Uri Aurl = new Uri("https://www.youtube.com/");

        IWebDriver aDriver;

        aDriver = new ChromeDriver();

        aDriver.Url = Aurl.OriginalString;

        var element = aDriver.FindElement(By.ClassName("sa_wr"));
        var innerHtml = element.GetAttribute("innerHTML");

        Console.WriteLine(innerHtml.Substring(0, 100)); //just to see if it got the html

    }         
}

问题是当我运行代码(作为控制台应用程序)时,出现以下错误

在此处输入图像描述

我在这个网站上看到过类似的问题,但他们没有帮助我

我不知道为什么会发生这个错误,特别是考虑到驱动程序和正确版本的驱动程序已经使用 NuGet 下载并且图片清楚地显示了它。

标签: c#seleniumselenium-webdriver.net-core.net-standard

解决方案


我不认为这是 .Net Standard 的问题,因为我能够加载它,但出现了不同的错误,因为我运行了更新版本的 Chrome,但我能够使用加载程序集正常类库(.Net Standard 2.0.3)和控制台应用程序(.Net Core 3.1)。

测试项目截图

编辑:您的输出/bin 文件夹应如下所示:

在此处输入图像描述

...并且您的参考库的 .csproj 文件至少应具有以下内容: 在此处输入图像描述

Edit #2: I just noticed from your nuget packages screenshot above that you have warnings on them. Please delete remove you references and try adding them back, or if you right click your project is VS there should be an option to redownload your packages, but I never have much success with the ladder method. However it does seem to be an issue with you packages. If these don't work for you, please try removing your bin and obj folders and rebuild, sometimes this can help. If you still have issues, please share the ⚠️ messages as they might assist in debugging.

Edit #3: You may also want to try and see if adding this <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> to you .csproj file as explained here might help: Nuget Pkg Dlls Missing from Build Folder in .Net Standard DLL Project. dlls are Not Copy Local? Fix in Visual Studio 2019?


推荐阅读