【发布时间】:2021-03-23 16:44:17
【问题描述】:
Visual Studio 2019 C#
项目 1: 依赖项:Meta.Numerics 4.1.4。我通过 Manage NuGet Packages for Solution 添加了 Meta Numerics 项目 1 是一个类库 将被编译并且 .dll 将与将在主应用程序中使用它的同事共享 项目 1 使用 Debug 构建得很好。
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>
.csproj 用于项目 2
<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>
【问题讨论】:
-
您可以尝试将
.csproj文件的相关部分添加到您的问题中... -
@Kit 感谢您的建议。我已经用完整的 .csproj 文件更新了帖子。它足够小,不会在帖子中添加很多行,而且我不知道什么是相关的。
-
我能够毫无问题地创建和运行您的最小代码。它看起来像某种类型的 NuGet 版本控制冲突(2.2.0 尝试加载,如控制台所示与引用 Numerics 的 4.1.4。尝试清除 nuget 缓存、.vs 目录、删除 bin 和 obj 目录并进行完全重建在 VS 中看看是否可以解决问题。
-
您使用的是 Nuget 包管理器中的 Meta.Numerics 还是 Meta.Numerics_2.2.0.0?
-
前者。我最终得到了与您的代码几乎相同的代码(csproj、cs 等)。我在查看 NuGet.org 时注意到有一个 Meta.Numerics 具有 2.2 和 4.1.4 版本,然后是 Meta.Numerics_2.2.0.0使用 1.0.0 版本...绝对令人困惑...这就是为什么我认为缓存出现问题等等。
标签: c# exception visual-studio-2019