簡體   English   中英

使用VS2017創建NuGet軟件包,該軟件包具有一個包含其他內容的專門命名的文件夾

[英]Create NuGet package using VS2017 that has a specifically named folder containing additional content

注意-這是如何使用Visual Studio 2017創建Nuget包的后續問題

在GitHub上的CodeFirstWebFramework NuGet軟件包需要在使用它的任何項目中安裝內容文件的特定命名文件夾。 這些文件是javascript,css,html,圖像和模板文件,以支持程序包創建的Web服務器。 它們必須位於一個名為CodeFirstWebFramework的文件夾中,並且需要復制到項目輸出文件夾中。

在沒有有關如何執行此操作的特定文檔的情況下,我嘗試了各種實驗。 我可以創建一個名為contentFiles的文件夾,並在其中CodeFirstWebFramework文件夾,並將contentFiles文件夾復制到使用項目OK(盡管,對VS 2017尚未發布的更新,這不會自動復制到輸出文件夾)。

我嘗試將文件放在CodeFirstWebframework文件夾中(即,從層次結構中刪除contentFiles ),然后將.csproj中的ContentTargetFolders設置為. 這會將文件復制到包OK中,但是沒有將它們復制到正在使用的項目中。

 <ItemGroup>
    <Content Include="CodeFirstWebFramework/**/*.*" copyToOutput="true">
      <IncludeInPackage>true</IncludeInPackage>
        <CopyToOutput>true</CopyToOutput>
        <BuildAction>Content</BuildAction>
        <copyToOutput>true</copyToOutput>
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        <PackageCopyToOutput>true</PackageCopyToOutput>
    </Content>
  </ItemGroup>

[請注意,在上面,有一些不正確和不必要的XML元素,這是我嘗試使其執行我想要的操作的一部分-但這在內容位於contentFiles文件夾中時有效

我現在意識到自己並不清楚。 我的代碼是運行Web服務器的DLL。 它需要能夠在using項目的輸出文件夾的子文件夾中找到某些js,html等文件和文件夾。 當前期望該子文件夾稱為CodeFirstWebFramework ,但是我可以更改它。

使用DLL的項目通常會有另一個文件夾,甚至是一系列文件夾,DLL還將在這些文件夾中搜索這些文件(因此項目作者可以提供更適合他們需要的版本)。

我希望這些文件夾被一致地命名,以便它們與項目相關(即,我當前將其命名為CodeFirstWebFramework ,而正在使用的項目稱為使用項目的名稱)。

如果我將contentFiles/CodeFirstWebFramework用於我的項目,則正在使用的項目必須對其使用contentFiles/ProjectName我想象會引起沖突,不是嗎?

通過將內容文件指定為不被展平來工作:

<Project>
  <PropertyGroup>
    <NuGetBuildTasksPackTargets>junk-value-to-avoid-conflicts</NuGetBuildTasksPackTargets>
  </PropertyGroup>
  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />

  <PropertyGroup>
    <TargetFramework>netstandard1.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <None Update="SomeExampleFolder\**\*" Pack="true" PackageCopyToOutput="true" PackageFlatten="false" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="NuGet.Build.Tasks.Pack" Version="4.3.0-preview3-4168" PrivateAssets="All" />
  </ItemGroup>
  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>

使用VS 2017 15.3或2.0.0 .NET Core CLI時,可以刪除使用NuGet.Build.Tasks.Pack預覽版的解決方法。

引用時,將產生以下輸出: 在此處輸入圖片說明

暫無
暫無

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

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