簡體   English   中英

使用Visual Studio Pack將構建目錄包含在nuget包中

[英]Include build directory in nuget package using visual studio pack

我正在嘗試使用內置的nuget軟件包構建用Visual Studio創建nupkg,並將項目中的build目錄包括在nupkg中。 看來這應該是一個相當簡單的任務,但我無法使其正常工作。 從我的谷歌搜索到我的csproj文件添加應該工作,但兩者都在nupkg中創建一個空的'build'目錄:

 <ItemGroup>
    <None Include="build\**">
      <Pack>true</Pack>
      <PackagePath>build\</PackagePath>
      <IncludeInPackage>true</IncludeInPackage>
    </None>
  </ItemGroup>

在我的nuspec中使用nuget pack創建具有以下內容的軟件包確實可以工作:

  <files>
        <!-- Include everything in \build -->
    <file src="build\**" target="build" />
  </files>

使用Visual Studio Pack將構建目錄包含在nuget包中

根據包含包中內容的文檔,應使用屬性<Pack>true</Pack><PackagePath>build\\</PackagePath>

如果要將所有內容僅復制到一個特定的根文件夾(而不是同時復制content和contentFiles),則可以使用MSBuild屬性ContentTargetFolders,該屬性默認為“ content; contentFiles”,但可以設置為任何其他文件夾名。

PackagePath可以是以分號分隔的目標路徑集。 指定空的程序包路徑會將文件添加到程序包的根目錄。

因此,您可以按以下方式更改ItemGroup:

  <ItemGroup>
    <None Include="build\**" Pack="True" PackagePath="build\" />
  </ItemGroup>

更新:

我相信這與我添加的內容相同,但是具有不同的XML結構並且沒有Pack屬性

Pack屬性是關鍵。 它可以很好地與您的XML結構和Pack屬性一起使用。 您應該確保項目文件夾中的build文件夾中有這些文件:

在此處輸入圖片說明

在下面查看我的測試演示:

在此處輸入圖片說明

UPDATE2:

啊! 您正在使用.net framework項目!! 就是這個問題的原因。 默認情況下,此方法用於.net standard.net core項目,不適用於.net framework 要解決此問題,您必須使用.nupsec文件,就像您在問題中發布的一樣。

如果您仍然想使用Visual Studio pack將構建目錄包含在nuget包中,則需要將項目類型更改為SDK類型:

有關更多詳細信息,請查看此文檔

然后,您可以使用我們之前討論過的方法。

希望這可以幫助。

解決此問題的方法是將項目升級到SDK類型 (默認情況下,Xamarin綁定項目使用舊格式,但似乎可以使用新類型),然后使用:

<ItemGroup>
    <None Update="build\**">
        <IncludeInPackage>true</IncludeInPackage>
    </None>
</ItemGroup>

包括構建目錄。 另一種方法是使用nuget pack

轉換項目時,請確保保留Xamarin導入:

<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.ObjCBinding.CSharp.targets" />

以下是我的項目文件的外觀:

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <PropertyGroup>
    <PackageId></PackageId>
    <PackageVersion>3.3.2</PackageVersion>
    <ReleaseVersion>$(PackageVersion)</ReleaseVersion>
    <AssemblyVersion>$(PackageVersion)</AssemblyVersion>
    <Authors>Nick Brook</Authors>
    <Description></Description>
    <Copyright></Copyright>
    <PackageProjectUrl></PackageProjectUrl>
    <Summary></Summary>
    <PackageTags></PackageTags>
    <Title></Title>
    <PackageReleaseNotes>Initial Release</PackageReleaseNotes>
    <OutputType>Library</OutputType>
    <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
    <OutputPath>bin\$(Configuration)</OutputPath>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <Optimize>true</Optimize>
    <PackageOutputPath>packed</PackageOutputPath>
    <PackOnBuild>true</PackOnBuild>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="Xamarin.iOS" />
  </ItemGroup>
  <ItemGroup>
    <ObjcBindingApiDefinition Include="ApiDefinition.cs" />
  </ItemGroup>
  <ItemGroup>
    <ObjcBindingCoreSource Include="Structs.cs" />
  </ItemGroup>
  <ItemGroup>
    <Compile Remove="Structs.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true' " />
    <Compile Remove="ApiDefinition.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true' " />
  </ItemGroup>
  <ItemGroup>
    <None Remove="packed\**" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Xamarin.Build.Download" Version="0.4.11" />
    <PackageReference Include="NuGet.Build.Packaging" Version="0.2.2" />
  </ItemGroup>
  <ItemGroup>
    <None Update="build\**">
      <IncludeInPackage>true</IncludeInPackage>
    </None>
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.ObjCBinding.CSharp.targets" />
</Project>

暫無
暫無

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

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