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