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

Msbuild Nuget目标,如何将重命名的内容文件发送到解决方案输出文件夹?,msbuild,package,nuget,target,Msbuild,Package,Nuget,Target,我创建了一个带有默认json配置文件config.json.pp的Nuget包。在安装时,它被转换并添加为内容;'config.json'。我还在包的build文件夹中添加了一个目标文件,它根据包安装所在的程序集根命名空间重命名配置文件: <?xml version="1.0" encoding="utf-8" ?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <I

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

<?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\$(配置)文件夹中


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

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

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