Nuget 目标,如何将重命名的内容文件发送到解决方案输出文件夹?

Nuget targets, how to send a renamed content file to solution output folder?

我创建了一个带有默认 json 配置文件 'config.json.pp' 的 Nuget 包。安装时,它被转换并添加为内容; 'config.json'。我还在包的构建文件夹中添加了一个目标文件,它根据安装包的程序集根命名空间重命名配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <ItemGroup>
    <ConfigFile Include="config.json"/>
  </ItemGroup>

  <Target Name="CopyConfigFile" AfterTargets="Build;Rebuild">
    <Copy SourceFiles="@(ConfigFile)" DestinationFiles ="@(ConfigFile->'$(OutDir)$(RootNameSpace)%(Extension)')" />
  </Target>

</Project>

当在具有更多程序集的解决方案中构建程序集时,它不会添加到输出目录,只会添加到安装包的程序集的 bin\$(configuration) 文件夹中。

如何将文件添加到解决方案主应用程序的输出目录?

您可以使用 link 元数据来执行此操作:

<ItemGroup>
  <Content Include="config.json"
           Link="$(RootNameSpace)%(Extension)"
           CopyToOutputDirectory="PreserveNewest"
           Visible="False"
           Condition="Exists('config.json')" />
</ItemGroup>