我试图打包一个nuget-packge,它有一个’app.config.intall.xdt’文件. xdt文件是支持
XML-Document-Transform (XDT).
如果要安装nuget-package的目标项目有app.config,则会正确执行XDT,但问题是如果目标项目没有app.config,XDT将不执行任何操作.
当需要XDT操作时,如果目标项目没有该文件,有没有办法创建app.config文件?
下面的代码显示了我的xdt文件’app.config.intall.xdt’,如果你想尝试安装导致问题的nuget包,请在nuget-packager控制台中运行以下命令.
安装nuget-package
install-package Experiment.Xunit -version 2.0.0-pre08
app.config.intall.xdt
<?xml version="1.0" encoding="utf-8"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <runtime xdt:Transform="InsertIfMissing"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(_defaultNamespace:assemblyIdentity/@name='xunit.extensions')"> <assemblyIdentity name="xunit.extensions" publicKeyToken="8d05b1bb7a6fdb6c" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.9.0.1566" newVersion="1.9.0.1566" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
解决方法
您可以使用NuGet提供的
Install.ps1 or Init.ps1 hook.
创建一个powershell脚本,如果app.config不存在,则使用默认值创建它
另一种方法是(我现在无法测试)在content folder of nuget packages中添加一个具有所需值的app.config文件.
我认为如果存在于项目根目录中,nuget将不会覆盖该文件.
—更新—
Nuget文档:Allow users to overwrite content files that already exist
—更新2 —-
我做了一些测试:您可以使用Configuration File Transformations而不是XDT来获得所需的行为
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。