首页 > 解决方案 > C# Visual Studio 2019,元数字,错误:无法加载文件或程序集

问题描述

Visual Studio 2019 C#

项目 1:依赖项:Meta.Numerics 4.1.4。我通过管理解决方案项目 1 的 NuGet 包添加了元数值,这是一个将被编译的类库,并且 .dll 将与将在主应用程序中使用它的同事共享,项目 1 使用调试构建得很好。

using System;
using Meta.Numerics;

namespace LeakDetection
{
    public class LeakDetectionOperations
    {

        public LeakDetectionOperations(int co = 24)
        { }

        public int leakCheck()
        {

            double result = ComplexMath.Abs(10);
            return 0;
        }
    }
}

项目 2 依赖项:项目 1。通过添加引用、浏览器导入并从项目 1 中选择 .dll 项目 2 只是一个简单的测试项目,我用来测试 .dll 对象。它运行,但在尝试调用 Meta.Numerics 的 ABS 函数时抛出异常。

输出图像

终端图片

using System;
using LeakDetection;

namespace LeakTest
{
    class Program
    {
        static void Main(string[] args)
        {
            LeakDetectionOperations obj = new LeakDetectionOperations();
            int ret;
            ret = obj.leakCheck();

            Console.WriteLine("Hello World!");
        }
    }
}

我已按照 Meta.Numeric gitrepo 关于安装的说明进行操作。按照他们建议安装软件包的方式完成了安装。我还清理了构建,并重新构建。我还从调试更改为发布,以查看是否有任何与导致错误的调试相关的内容。正如您在上面的代码中看到的那样,它相当小,因为这不是我的实际代码。它有点复杂,但不是发布完整的代码,而是复制我遇到的问题的最小可用代码。Meta.numeric 库中的任何内容均不可用。

我通常使用 Python 工作,有一定的 C 和 C++ 经验,但我使用 make 文件在 linux 中编译。使用 C#,Visual Studio 对我来说很新鲜。

任何关于我应该看哪里的建议将不胜感激。

更新:根据@kit 的建议,我在下面的项目 1 中包含了 .csproj 文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>Leak_Detection</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Meta.Numerics" Version="4.1.4" />
  </ItemGroup>

</Project>

项目 2 的 .csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include="Leak Detection">
      <HintPath>..\..\Leak Detection\Leak Detection\bin\Debug\netcoreapp3.1\Leak Detection.dll</HintPath>
    </Reference>
  </ItemGroup>

</Project>

标签: c#exceptionvisual-studio-2019

解决方案


我不知道这是否正常,但对我来说解决问题的是通过库和控制台应用程序上的 Nuget 包管理器安装包。两种构建都需要参考。

我之前所做的只是为库构建安装包。看到控制台应用程序是如何使用被引用和调用的 .dll 进行编译的,调用应用程序还需要安装包。


推荐阅读