簡體   English   中英

在 NuGet 包中包含一個文件夾,並將其作為文件 .netcore/Razor 安裝到項目中

[英]Including a Folder in NuGet Package and have it install into project as file .netcore/Razor

我正在使用 Visual Studio 2019 並使用此方法成功創建 NuGet 包:

https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-visual-studio?tabs=netcore-cli

一切正常,但也有一些設置( .json包含在目錄中)文件PageSettings/

當我發布 NuGet 包然后將其安裝到新項目中時,此目錄在 VS 中顯示為linked item (參見圖片)。 因此,作為用戶,我可以訪問這些文件,但在項目運行時它們不“存在”。

在此處輸入圖片說明

這意味着如果我在沒有物理復制和添加這些文件的情況下運行這個項目,我會得到ArgumentException: The directory name 'Path-To-project\\pagesettings' does not exist. (Parameter 'Path') ArgumentException: The directory name 'Path-To-project\\pagesettings' does not exist. (Parameter 'Path')

我可以理解為什么會發生這種情況,但無法弄清楚如何改變它,或者如果可能的話。

上面鏈接的文章建議將代碼添加到csproj文件中,例如:

<ItemGroup>
  <Content Include="readme.txt">
    <Pack>true</Pack>
    <PackagePath>\</PackagePath>
  </Content>
</ItemGroup>

但是,這並不工作,並在事實上似乎沒有必要,因為包命令,包括我的文件,只是沒有安裝適當的時候創建它們。

此外 - 如果有辦法告訴 VS 提示是否安裝此文件,那將非常方便。 由於它是設置,如果用戶更改設置然后安裝更新版本的我的 NuGet 包,我不希望它覆蓋他們的自定義設置......也許這就是鏈接設計發生的原因......如果是這樣,如果有人可以確認嗎?

實際上,您應該在 nuget 包中創建一個.props文件。

1)在您的 nuget 項目中創建一個名為 <package_id>.props 的文件。

像這樣:

在此處輸入圖片說明

注意:如果您創建的 nuget 包名為test.1.0.0.nupkg ,則該文件應命名為test.props以便它可以工作。

2)test.props文件中添加這些:

<Project>
  <Target Name="CopyFiles" BeforeTargets="Build">
    <ItemGroup>     
      <File Include="$(MSBuildThisFileDirectory)..\Pagesettings\*.*"></File>          
    </ItemGroup>
      <Copy SourceFiles="@(File)" DestinationFolder="$(ProjectDir)Pagesettings"></Copy>
  </Target>
</Project>

3)xxx.csproj文件中添加這些:

   <ItemGroup>
        <None Include="Pagesettings\*.*(the json files' path of your nuget project)" Pack="true" PackagePath="Pagesettings"> 
        </None>
        <None Include="build\*.*" Pack="true" PackagePath="build"></None>
    </ItemGroup>

然后重新安裝您的項目。

4)然后清理 nuget 緩存或刪除C:\\Users\\xxx(current user)\\.nuget\\packages下的所有文件。

5)當您安裝這個新版本的 nuget 包時,請再次構建您的主項目以運行目標以生成文件。

此外,還有一個類似的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM