创建 nuget 包时更改根文件夹
change root folder when creating a nuget package
我正在使用 VS2017 和 _CreateNewNuGetPackage 从 Web 项目 (.Net) 创建 NuGet 包。所有文件都放在 /content 文件夹中。在项目中安装 NuGet 包时的问题是所有文件都将安装在根文件夹中。
我真正想要的是拥有一个 Nuget 包,其中 所有 构建文件都在 content/extraFolder/ 中。
我尝试使用 .nuspec 文件中的标签选项,但 .nuspec 添加了项目中的文件而不是构建文件。
之后我尝试将构建路径设置为 bin\extraFolder 并使用选项 "Nuget pack xxx -BasePath ..\ xxx",但看起来 nuget 使用 vbproj 文件并忽略了 basepath 选项。
我知道 nuget install -outputdir extraFolder/ 是可能的,但我想让 nuget 包的用户更轻松。
我想要的nuget包是这样的:
content/
extraFolder/
all build folders and files
lib/
dll file
现在唯一缺少的是 extraFolder。有人知道我该怎么做吗?
What I really want is to have a Nuget package where all the build files are in content/extraFolder/.
如果我没理解错的话,你可以试试把.nuspec
文件中的target="content"
改成target="content\content\extraFolder"
。所以你的 .nuspec
看起来像:
<?xml version="1.0"?>
<package >
<metadata>
<id>MyTestPackager</id>
<version>1.0.0</version>
<authors>Tester</authors>
<owners>Tester</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package description</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
<files>
<file src="Test.xml" target="content\content\extraFolder\Test.xml" />
</files>
</package>
然后当你打包这个.nuspec
文件时,你会得到以下包:
将这个包添加到项目中,所有构建文件都在content/extraFolder/:
如果我不理解你的问题,请直接在屏幕截图中添加你的当前状态和你想要的内容。
更新:
The part i do not know anything about is the part where MSBuild puts
the builded files in the 'bin' folder
如果要将这些文件放在\bin
文件夹中,需要在\build
文件夹中添加一个.target
文件,将这些文件复制到bin文件夹中:
.targets
文件的内容:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="$(ProjectDir)content\extraFolder\test.txt">
<Link>test.txt</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
在 nuspec 文件中,将 .targets 文件添加到构建文件夹中:
查看 了解更多详情。
我正在使用 VS2017 和 _CreateNewNuGetPackage 从 Web 项目 (.Net) 创建 NuGet 包。所有文件都放在 /content 文件夹中。在项目中安装 NuGet 包时的问题是所有文件都将安装在根文件夹中。
我真正想要的是拥有一个 Nuget 包,其中 所有 构建文件都在 content/extraFolder/ 中。
我尝试使用 .nuspec 文件中的标签选项,但 .nuspec 添加了项目中的文件而不是构建文件。
之后我尝试将构建路径设置为 bin\extraFolder 并使用选项 "Nuget pack xxx -BasePath ..\ xxx",但看起来 nuget 使用 vbproj 文件并忽略了 basepath 选项。
我知道 nuget install -outputdir extraFolder/ 是可能的,但我想让 nuget 包的用户更轻松。
我想要的nuget包是这样的:
content/ extraFolder/ all build folders and files lib/ dll file
现在唯一缺少的是 extraFolder。有人知道我该怎么做吗?
What I really want is to have a Nuget package where all the build files are in content/extraFolder/.
如果我没理解错的话,你可以试试把.nuspec
文件中的target="content"
改成target="content\content\extraFolder"
。所以你的 .nuspec
看起来像:
<?xml version="1.0"?>
<package >
<metadata>
<id>MyTestPackager</id>
<version>1.0.0</version>
<authors>Tester</authors>
<owners>Tester</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package description</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
<files>
<file src="Test.xml" target="content\content\extraFolder\Test.xml" />
</files>
</package>
然后当你打包这个.nuspec
文件时,你会得到以下包:
将这个包添加到项目中,所有构建文件都在content/extraFolder/:
如果我不理解你的问题,请直接在屏幕截图中添加你的当前状态和你想要的内容。
更新:
The part i do not know anything about is the part where MSBuild puts the builded files in the 'bin' folder
如果要将这些文件放在\bin
文件夹中,需要在\build
文件夹中添加一个.target
文件,将这些文件复制到bin文件夹中:
.targets
文件的内容:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="$(ProjectDir)content\extraFolder\test.txt">
<Link>test.txt</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
在 nuspec 文件中,将 .targets 文件添加到构建文件夹中:
查看