繁体   English   中英

无法在.net Core中复制带有nuget包的文件夹

[英]Cannot copy folder with nuget package in .net core

我创建一个NuGet包并安装到另一个项目中。 但请勿将文件复制到位置项目中。 仅我的文件引用了NuGet包,并且我更改了代码,该包也更改了! 我想将包复制到目标项目。

<?xml version="1.0"?>
<package>
 <metadata minClientVersion="3.3.0">
    <id>MyPackage</id>
    <version>1.0.0</version>
    <authors>Meysam</authors>
    <owners>Meysam</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2018</copyright>
    <tags>Tag1 Tag2</tags>

    <contentFiles>
      <files include="cs/*.*/**" buildAction="Compile" />
    </contentFiles>

  </metadata>

  <files>
    <file src="ConsoleApp1\CustomClass\CustomClass.cs" target="contentFiles\cs\any\CustomClass" />
  </files>

</package>

在此处输入图片说明

在此处输入图片说明

仅当使用packages.config ,才支持将文件复制到使用nuget包的项目中,而.NET Core项目所需的SDK风格的项目则不支持。 如您的屏幕快照所示,在构建时会包含PackageReferences项目中的contentFiles 您在屏幕快照中指向的C#右下角的小箭头图标和文件夹图标是视觉指示器,该文件和文件夹与项目中的其他文件和文件夹不同。 实际上,该小图标覆盖类似于Windows为快捷方式添加的内容,因此,如果您了解快捷方式是一个“指向”另一个文件的文件,则应该理解这些是项目外文件的快捷方式,但包含在其中作为您项目的一部分。

无论如何,它按设计工作。

您需要找到另一种方式来做您想做的事情,但是您没有描述为什么要在项目中包含引用您的软件包的文件,因此我无法提供直接建议。 最好的建议是,如果您对ASP.NET和ASP.NET Core很有经验,请考虑一下ASP.NET过去如何直接从web.config中读取许多设置,但是ASP.NET Core而是使用生成器模式,因此用户不必被迫将设置存储在web.config中,并且可以将设置存储在所需的任何位置。 如果您的操作相似,那么如果您为包用户提供了一个可以覆盖的配置生成器,而不是在项目中拥有一个文件,他们每次升级到该文件时都必须对其进行编辑和覆盖,则可以为他们带来更好的体验您的软件包的新版本。

无法在.net Core中复制带有nuget包的文件夹

是的,就像齐夫坎所说:

仅在使用packages.config时才支持将文件复制到使用nuget包的项目中

但是,我们可以使用解决方法来解决此问题。 我们可以在xx.targets文件中添加一个副本任务,并设置在\\ build文件夹此文件中的.nuspec文件。

mypackage.targets文件的内容:

<Target Name="CopyFile" AfterTargets="AfterBuild">
  <ItemGroup>
    <CopyFiles Include="$(NuGetPackageRoot)\mypackage\4.0.0\cs\*.*\**" />
  </ItemGroup>

   <Copy  
      SourceFiles="@(CopyFiles)"  
      DestinationFolder="$(ProjectDir)"  
   /> 
</Target>

.nuspec文件:

 <file src="xxx\xxx\mypackage.targets" target="build" />

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM