我试图打包一个nuget-packge,它有一个文件&app; 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中运行以下命令控制台。
install-package Experiment.Xunit -version 2.0.0-pre08
<?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>
答案 0 :(得分:1)
您可以使用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来获得所需的行为