Visual studio Nuget包生成损坏的web.config文件(assemblyBinding部分)
编辑:问题已经解决!请参阅下面我的答案。 我创建的nuget包有一个奇怪的问题。 我已经创建了几个nuget软件包,以前从未遇到过这个问题,但现在突然在安装新软件包时,它会生成一个无效的web.config文件 nuspec文件与其他一些(工作)项目中的文件几乎完全相同。我添加了安装脚本和一些特殊内容,并在元数据部分设置了依赖项:Visual studio Nuget包生成损坏的web.config文件(assemblyBinding部分),visual-studio,nuget,nuget-package,Visual Studio,Nuget,Nuget Package,编辑:问题已经解决!请参阅下面我的答案。 我创建的nuget包有一个奇怪的问题。 我已经创建了几个nuget软件包,以前从未遇到过这个问题,但现在突然在安装新软件包时,它会生成一个无效的web.config文件 nuspec文件与其他一些(工作)项目中的文件几乎完全相同。我添加了安装脚本和一些特殊内容,并在元数据部分设置了依赖项: <?xml version="1.0"?> <package > <metadata> <id>$id$&
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>Kooco.com Ltd</authors>
<owners>$author$</owners>
<description>Server-Project Template for use with the Kooco.Framework</description>
<releaseNotes>Pre-Alpha Release</releaseNotes>
<copyright>Copyright 2017</copyright>
<tags>Maxima Kooco WebProjects</tags>
<dependencies>
<dependency id="Newtonsoft.Json" version="10.0" />
<dependency id="AutoMapper" version="6.0" />
<dependency id="WebActivatorEx" version="2.2" />
<dependency id="Kooco.Framework" version="$version$" />
</dependencies>
<references>
</references>
</metadata>
<files>
<file src="install.ps1" target="tools" />
<file src="NugetOverwriteContents\**\*.*" target="tools\OverwriteContents" />
<file src="NugetNoOverwriteContents\**\*.*" target="tools\NugetNoOverwriteContents" />
</files>
</package>
$id$
$version$
$title$
库科公司
$author$
用于Kooco.Framework的服务器项目模板
α前释放
版权所有2017
Maxima Kooco网络项目
这些依赖项与其他(工作)包中的依赖项完全相同
但由于某些原因,在安装包时,nuget将生成以下web.config部分,由于非关闭标记,这将导致应用程序中出现错误:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" /><assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /><assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /></dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
</assemblyBinding>
</runtime>
在安装nuget软件包之前,它是:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" /><assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /></dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
</assemblyBinding>
</runtime>
我没有自定义配置转换。
我有一个安装脚本,但是这个脚本不是问题所在,我也尝试过在没有安装脚本的情况下安装,但也有同样的问题
目标项目是一个空的ASP.NETWeb应用程序,我使用的是激活了“MVC”和“WebAPI”的“空”模板
我的nuget软件包管理器版本是3.5.0.1484。已启用自动更新。
我正在使用Visual Studio 2015社区版。我的系统是Windows10
有人知道是什么导致了这个问题吗
有人知道是什么导致了这个问题吗
我用您的nuspec文件创建了一个nuget包,但不包括的部分代码>,然后将其安装到ASP.NETMVC项目中。它很好用。因此,如果没有更多详细信息,我无法直接解决此问题,我可以为您提供一些疑难解答:
首先,请排除web.config上的人为修改。因为默认绑定信息应该如下所示:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
您可以创建一个新的空白ASP.NETMVC项目来检查这一点
其次,我们可以通过或使用XML文档转换(XDT)修改web.config
web.config.transform文件包含与web.config文件相同的内容,在安装NuGet软件包时,它将应用于web.config文件。
XDT功能更强大,可以对web.config文件进行更复杂的修改,例如插入或删除现有元素。因此,请仔细检查您的包中是否包含任何带有通配符“*”的配置转换文件。您可以尝试排除程序包中的这些文件,以检查此问题是否仍然存在。我发现了问题:
问题是,在我的一些项目中,web.config文件将构建操作设置为“Content”,而nuget包生成器似乎会自动从中生成一个web.config转换。
将构建操作更改为“无”解决了问题
顺便说一句,使用“NuGet Package Explorer”工具帮助很大,它允许您查看创建的NuGet包的内容,我在其中看到了自动创建的“web.config.transform”文件
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" /><assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /><assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /></dependentAssembly>