使用visual studio pack在nuget包中包含构建目录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用visual studio pack在nuget包中包含构建目录相关的知识,希望对你有一定的参考价值。
我正在尝试使用内置的nuget包构建使用Visual Studio创建一个nupkg,并在nupkg中包含我项目中的构建目录。它似乎应该是一个相当简单的任务,但我无法让它工作。从我的谷歌搜索添加其中任何一个到我的csproj文件应该工作,但都在nupkg中创建一个空的'build'目录:
<ItemGroup>
<None Include="build**">
<Pack>true</Pack>
<PackagePath>build</PackagePath>
<IncludeInPackage>true</IncludeInPackage>
</None>
</ItemGroup>
使用nuget pack
在我的nuspec中创建包含以下内容的包确实有效:
<files>
<!-- Include everything in uild -->
<file src="build**" target="build" />
</files>
使用visual studio pack在nuget包中包含构建目录
根据文件Including content in a package,你应该使用属性<Pack>true</Pack>
和<PackagePath>build</PackagePath>
:
如果要将所有内容复制到特定的根文件夹(而不是内容和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类型:
查看this document了解更多详情。
然后你可以使用我们之前谈到过的方法。
希望这可以帮助。
这个问题的解决方案是upgrade the project to SDK type(Xamarin绑定项目默认使用旧格式,但似乎使用新类型)然后使用:
<ItemGroup>
<None Update="build**">
<IncludeInPackage>true</IncludeInPackage>
</None>
</ItemGroup>
包含构建目录。另一种方法是使用nuget pack
。
转换项目时,请务必留下Xamarin导入:
<Import Project="$(MSBuildExtensionsPath)XamariniosXamarin.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)XamariniOSXamarin.iOS.ObjCBinding.CSharp.targets" />
</Project>
以上是关于使用visual studio pack在nuget包中包含构建目录的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio添加Visual Basic Power Packs工具箱
如何使用Visual Studio 2017在Windows窗体应用程序中查看和编辑Visual Basic Power Pack形状?
.NET Framework 在全球化(globalization)功能上新的类库:Microsoft Visual Studio International Pack 1.0 版 Beta1
win10的机子上安装sql service 2014 ,提示让下载Visual Studio 2010 Service Pack 1.去哪里下载?
从Visual Studio Online Package Feed中删除NuGet包而不是Unlist
为啥我的visual studio service pack 6 不能安装啊?是否一定要装在C盘?我的VC6.0是装在D盘的。