[英]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.