Visual studio 2015 如何设置';复制到输出目录';我的nuspec文件中的属性? 请考虑以下NUPEC文件: <?xml version="1.0"?> <package > [SOME METADATA] <files> <file src="bin\x64\$configuration$\GR*.filetype" target="content\" /> </files> </package> [一些元数据]

Visual studio 2015 如何设置';复制到输出目录';我的nuspec文件中的属性? 请考虑以下NUPEC文件: <?xml version="1.0"?> <package > [SOME METADATA] <files> <file src="bin\x64\$configuration$\GR*.filetype" target="content\" /> </files> </package> [一些元数据],visual-studio-2015,nuget,nuspec,Visual Studio 2015,Nuget,Nuspec,上面已经成功地打包了以“GR”开头的文件类型文件,并将它们添加到我的新的引用解决方案中 问题是我希望这些文件总是复制到输出目录。我可以通过nuspec执行此操作,而不必手动修改新解决方案中的属性吗 如何在nuspec文件中设置“复制到输出目录”属性 马丁指出了正确的方向,我以前也有同样的要求,对我很好。我把答案贴在这里,更详细地回答你的问题,希望这能给你一些帮助 要解决此问题,您可以执行以下步骤: 在项目文件夹中添加xx.targets文件,确保目标文件的名称与包id的名称相同(TestDemo

上面已经成功地打包了以“GR”开头的文件类型文件,并将它们添加到我的新的引用解决方案中

问题是我希望这些文件总是复制到输出目录。我可以通过nuspec执行此操作,而不必手动修改新解决方案中的属性吗

如何在nuspec文件中设置“复制到输出目录”属性

马丁指出了正确的方向,我以前也有同样的要求,对我很好。我把答案贴在这里,更详细地回答你的问题,希望这能给你一些帮助

要解决此问题,您可以执行以下步骤:

  • 在项目文件夹中添加xx.targets文件,确保目标文件的名称与包id的名称相同(TestDemo是我的包id,因此.targets的名称是TestDemo.targets)

  • 在目标文件中添加以下代码:

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     <ItemGroup>
      <None Include="$(MSBuildThisFileDirectory)GRabc.txt">
         <Link>GRabc.txt</Link>
         <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      </None>
     </ItemGroup>
    </Project>
    
    
    GRabc.txt
    总是
    
  • 注意:“$(MSBuildThisFileDirectory)”的路径应该是相对路径,如果不熟悉,可以使用绝对路径

  • 在nuspec文件中,将所需文件与目标文件一起添加到构建目录

      <files>
        <file src="bin\x64\Debug\GR*.txt" target="Build\" />
        <file src="TestDemo.targets" target="Build\" />
        <file src="bin\Debug\TestDemo.dll" target="lib\462" />
      </files>
    
    
    
  • 打包这个包,然后将它添加到其他项目中进行测试,它可以正常工作


  • 接受的答案对于非内容文件很有用,因为安装时它不会链接到project

    但是,我需要一个设置xml文件,它将被添加到项目中,nuget包用户可以编辑它,包dll将从输出目录加载编辑过的xml文件

    由于内容文件不会复制到构建目录,所以我必须使用
    .targets
    文件将内容文件复制到输出目录

    nuspec
    文件

    <file src="TestDemo.targets" target="build"/>
    <file src="Settings.xml" target="content/Configuration"/>
    

    我今天使用了相同的方法,可能是重复的,而且效果很好。但我发现,在VS的文件属性中,包含的文件后来会读到“请勿复制”,这是非常误导的。如果用户不知道幕后发生了什么(很可能他不知道!),他会感到非常困惑!有人知道是否可以在.targets文件中使用通配符吗?如何将文件放置在目标文件的子文件夹中?我试图在build文件夹下添加一个文件夹,并在目标文件中添加了“$(MSBuildThisFileDirectory)子文件夹\RuleSupport.clp”,但它仍然将该文件放在根bin\debug文件夹中,如果有人在寻找上述Brown先生和erotavlas问题的答案,请参见@erotavlas\SubFolder\File.txt nuspec文件中的标记在哪里?就在标签下面?在下面?此外,我还在项目文件夹中创建了.targets文件。但是在发布它时,我没有看到.targets文件作为.nupkg zip文件的一部分。有人能澄清一下吗?我正在尝试将一个简单的README.txt文件从nuget pkg复制到任何导入它的项目中。
    <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Target Name="AfterBuild">
        <Copy SourceFiles="$(ProjectDir)Configuration\Settings.xml" DestinationFolder="$(TargetDir)Configuration\" ContinueOnError="true" />
      </Target>
    </Project>