C# 如何更改nuget将转换的配置文件以实现程序集绑定重定向
我正在asp.net mvc项目中使用xdt转换。My web.configs具有以下结构:C# 如何更改nuget将转换的配置文件以实现程序集绑定重定向,c#,msbuild,nuget,csproj,C#,Msbuild,Nuget,Csproj,我正在asp.net mvc项目中使用xdt转换。My web.configs具有以下结构: web.base.config-带有共享道具/绑定重定向等的基本配置文件 web.$(configuration).config-config文件,包含给定配置的xdt转换 web.config—XML转换的输出文件 Nuget有时会生成程序集绑定重定向,这些重定向在TransformXML自动生成的web.config文件中创建。我想将web.base.config作为应用绑定重定向的文件。我怎么
- web.base.config-带有共享道具/绑定重定向等的基本配置文件
- web.$(configuration).config-config文件,包含给定配置的xdt转换
- web.config—XML转换的输出文件
web.base.config
作为应用绑定重定向的文件。我怎么能这么做
我试过的
已调查GenerateBindingRedirects
target来自Microsoft.Common.CurrentVersion.targets
基本上,我尝试查看这是否是可以参与*.config文件上的程序集绑定重定向转换的msbuild目标。不幸的是,没有,因为它正在转换bin文件夹中的*.dll.config
文件
从中搜索nuget2源代码,以查找在源代码中确定配置文件的位置
我在RuntimeHelpers中看到了正确的文件。cs:63:
var manager = new BindingRedirectManager(fileSystem, project.GetConfigurationFile());
其中GetConfigurationFile
实现如下所示:
return project.IsWebProject() ? WebConfig : AppConfig;
其中web/app config常量为
web.config
和app.config
。这真的给了我0的希望,我可以更改配置文件的位置,以便使用当前的nuget运行时绑定重定向解析。也许我错了,仍然有机会将绑定重定向应用到web.base.config
?不幸的是,我不知道如何让nuget修补非标准配置,然而,我在转换方面做了很多工作,如果您能详细说明一下为什么您最终使用了web.base.config
作为公共部分,而不是web.config
,也许有人可以提供帮助。为我的团队工作的设置是保持web.config
“dev ready”,允许开发人员在本地调试所有内容,并仅在发布期间应用配置转换。我们有两种类型的转换:配置(debug/release)和环境特定(dev1/qa2/prod.green)。@illiapov评论说额外的配置是发布时使用的转换,web.config
,否则包含所有内容。我觉得这就是它的设计初衷,但这只是我的感觉。顺便说一句,NuGet2很古老,它的目标是Visual Studio 2013。NuGet.Client repo包含所有当前代码。对于我们来说,将web.base.config
、web.xxx.config
和web.config
分开的原因是版本控制。它的错误倾向于有一个不断变化的配置文件签入到VC。有人找到一个优雅的方法来修复这个问题吗?@CervEd从我所看到的情况来看,我认为要拥有这个功能,需要对nuget进行更改。Nuget源代码没有任何属性,您可以通过检查来选择它应该引用的web.config:/