![](/img/trans.png)
[英]Is there a way to copy nuget package references from one solution to another in .net-core?
[英]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.