首页 > 解决方案 > 通过 NuGet 更新后 OpenTK 应用程序崩溃

问题描述

通过 NuGet 安装新版本的 OpenTK 后,我们的 Windows 窗体应用程序崩溃。应用程序的其余部分运行,但使用 OpenTK 部分的表单在加载时只会使应用程序崩溃。我们在我们的应用程序中包含两个 dll,OpenTK.dll 和 OpenTK.GLControl.dll,并且直到现在都使用了两个类似的版本。NuGet 提供更新,但两个 dll 的版本控制不同:第一个为 v3.2.0,第二个为 v3.1.0,这也可能导致错误或需要将 NuGet 放入 .config.exe 文件中的信息存储.

我们只有在删除 Application.config.exe 后才会出现这个问题,NuGet 在其中存储了以下几行:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="OpenTK" publicKeyToken="bad199fe84eb3df4" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="3.2.0.0" />
  </dependentAssembly>
</assemblyBinding>

我们想发布不带 .config.exe 文件的 .exe,并想知道是否有办法将此配置放入 .exe 文件中,从而使我们能够在可用时更新到新版本的 OpenTK。

标签: c#visual-studionugetconfigopentk

解决方案


由构建项目时输出文件夹下的文件创建Application.config.exeapp.config它在运行时适用于应用程序。如果您想在.exe没有 .config.exe 文件的情况下发布,您可以将其嵌入app.config到 exe 中,然后删除bin文件夹中Application.config.exe的默认值。

1)将App.configBuild Action更改为.Embedded Resource

在此处输入图像描述

2)删除binobj重建您的项目以生成新的输出文件。

3)然后您可以使用已经嵌入该文件的application.exeapp.config文件。

之后,您可以删除默认由VSapplication.config.exe生成的。app.config它已经嵌入到applciation.exe.


推荐阅读