C# NuGet dll.config更改必须复制到exe.config吗?

C# NuGet dll.config更改必须复制到exe.config吗?,c#,nuget,app-config,C#,Nuget,App Config,如果我向DLL项目MyLib(即输出类型类库)添加NuGet包引用,则包管理器有时会在项目中创建一个app.config(例如,使用bindingRedirect),该app.config生成为MyLib.DLL.config。举个例子,这是真的 当我的Windows桌面应用程序加载MyLib.dll时,它会忽略MyLib.dll.config中的bindingRedirect,我会得到一个FileLoadException。如果手动将bindingRedirect复制到EXE项目的app.co

如果我向DLL项目MyLib(即输出类型类库)添加NuGet包引用,则包管理器有时会在项目中创建一个app.config(例如,使用bindingRedirect),该app.config生成为MyLib.DLL.config。举个例子,这是真的

当我的Windows桌面应用程序加载MyLib.dll时,它会忽略MyLib.dll.config中的bindingRedirect,我会得到一个FileLoadException。如果手动将bindingRedirect复制到EXE项目的app.config,则可以解决此问题

app.config文件之间的手动复制粘贴真的是让NuGet bindingRedirect工作的唯一方法吗?


考虑到NuGet应该自动处理依赖项,这看起来非常乏味且容易出错。

特定于包的配置文件所做的只是向您显示特定于该包的配置。您可能不想将其放入实际的配置文件中,也可能不想将其放入实际的配置文件中,您可能需要根据自己的需要对其进行检查(EntityFramework或log4net就是很好的例子)。在将包安装到类库的情况下,配置文件毫无意义,需要将该配置移动到相应的可执行文件app.config中-如何实现自动化

在nuget之前,您可以从某处下载dll,然后按照说明设置必要的配置。这绝对是一个进步


总之,是的,如果您需要它,您确实需要复制它,这是有意义的。

这是唯一的方法:类库项目中的app.config文件本质上只是示例代码,如果需要,您可以复制到主应用程序的配置文件中

在bindingRedirect的情况下-我认为只有在两种情况下才需要它:

  • 如果有多个DLL访问不同版本的MyLib程序集。在这种情况下,您需要明确决定要使用哪个版本

  • 如果主应用程序的程序集包含引用较旧版本MyLib程序集的配置元素。在这种情况下,您可以执行以下操作之一:

    • 更新主配置文件中的版本
    • 将bindingRedirect添加到主配置文件
    • 将Nuget包添加到主应用程序项目中,在这种情况下,它可能会为您添加bindingRedirect

  • 有更好的办法。在添加NuGet包引用之前,我只需要添加一些本地项目引用

    当我最初将Microsoft.Owin NuGet引用添加到MyLib时,我还没有将MyLib引用添加到MyApp(又称EXE项目)。使用MyApp中的MyLib引用,我卸载了Microsoft.Owin NuGet包,然后将Microsoft.Owin添加回MyLib。巴达宾,巴达邦。bindingRedirect已自动添加到MyApp的app.config文件中

    因此,在创建新类库时,显然应该先向现有项目添加新的库引用,然后再向新库添加NuGet包引用