VS 2019正在寻找软件包的错误汇编版本

问题描述 投票:0回答:1

我正在使用.Net Core创建我的第一个项目,但在使两个Nuget程序包可能正常工作时遇到了一些问题。

[尝试调试应用程序时,出现以下两个错误:

Could not load file or assembly 'GalaSoft.MvvmLight, Version=5.4.1.0, Culture=neutral, PublicKeyToken=0ffbc31322e9d308'. The system cannot find the file specified.

Could not load file or assembly 'GongSolutions.WPF.DragDrop, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0ffbc31322e9d308'. The system cannot find the file specified.

现在,这是在解决方案资源管理器中对这些软件包的说明:

enter image description hereenter image description here

显示的版本与显示的错误不同。我搜索了项目中的每个文件,并且发现错误版本的唯一地方是项目的.deps.json文件,该文件显示以下内容:

{
  "runtimeTarget": {
    "name": ".NETCoreApp,Version=v3.0",
    "signature": ""
  },
  "compilationOptions": {},
  "targets": {
    ".NETCoreApp,Version=v3.0": {
      "TestProject/1.0.0": {
        "dependencies": {
          "MvvmLightLibsStd10": "5.4.1.1",
          "gong-wpf-dragdrop": "2.1.0",
        },
        "runtime": {
          "TestProject.dll": {}
        }
      },
      "gong-wpf-dragdrop/2.1.0": {
        "runtime": {
          "lib/netcoreapp3.0/GongSolutions.WPF.DragDrop.dll": {
            "assemblyVersion": "2.0.0.0",
            "fileVersion": "2.1.0.2"
          }
        }
      },
      "MvvmLightLibsStd10/5.4.1.1": {
        "runtime": {
          "lib/netstandard1.0/GalaSoft.MvvmLight.dll": {
            "assemblyVersion": "5.4.1.0",
            "fileVersion": "5.4.1.0"
          }
        }
      },

我已经尝试更改上面的内容以匹配正确的版本,但没有做任何更改。

我还尝试了什么:

  • 卸载并重新安装游戏包
  • 重新启动Visual Studio

我确实注意到错误的软件包确实存在于C:\Users\myname\.nuget\packages下的其他文件夹中,但与我使用的实际.dlls相对于Visual Studio向我显示的路径不匹配。

一些可能有用的注释:

整个解决方案包含两个项目:WPF Windows Application包含一个WindowWPF Class Library包含一个UserControl驻留在wpf应用程序项目中。

Class Library包含nuget包。

两个项目都以.NET Core 3.0为目标。

更新:我尝试将以下内容放入两个<PropertyGroup>文件的.csproj标记内:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

他们都没有工作。

wpf mvvm-light nuget-package visual-studio-2019 .net-core-3.0
1个回答
0
投票

我认为这里还有另一个问题。版本号是正确的,因为Nuget版本和程序集版本之间存在差异。我检查了两个软件包,并且程序集版本正确。

“系统找不到指定的文件。”加载程序集时出现的错误不是安装错误,而是运行时错误。您可能需要在配置中为这些dll输入一个<bindingRedirect

原因是存在加载问题的程序集(间接)使用了多个版本。例如另一个项目或dll使用“ gong-wpf-dragdrop”和另一个程序集版本。由于程序集是强命名的,因此在没有绑定重定向的情况下是不允许的,并且您将得到“系统找不到指定的文件”的信息。

您应该在bin文件夹中检查所使用dll的程序集版本。例如如果“ GongSolutions.WPF.DragDrop.dll”的程序集版本为2.5.0.0,则需要从2.0.0.0重定向到2.5.0.0。那将是:

<dependentAssembly>
  <assemblyIdentity name="GongSolutions.WPF.DragDrop"
    publicKeyToken="0ffbc31322e9d308"  />
  <bindingRedirect oldVersion="2.0.0.0" newVersion="2.5.0.0" />
</dependentAssembly>

您可以在Visual Studio中拖动dll并查看程序集版本。例如:

enter image description here

也请参阅MSDN以获取本主题。

© www.soinside.com 2019 - 2024. All rights reserved.