定制nuget包需要帮助

时间:2018-01-17 10:01:14

标签: nuget visual-studio-2017 azure-devops nuget-package azure-artifacts

您好,我想知道如何处理这种情况:

  • 我有一个带有调试和发布配置的.Net PCL库
  • 我想从中创建一个nuget包,它包含两个配置输出。
  • 我想使用VSTS作为Debug构建的符号服务器。
  • 我希望在安装软件包时使用所选配置切换到正确的程序集。

我跟着this answer但是我 从来没有将目标文件集成到消费的csproj文件中 那个版本设置为固定数字?

这是我的nuspec文件内容:

 SELECT column1, column2, column3 FROM table

建议在这做什么?

(使用NuGet版本:4.4.1.4656)

1 个答案:

答案 0 :(得分:1)

  

但我从来没有将目标文件集成到消费的csproj文件中。

如果你的nuget包中的build文件夹下有.targets文件,那么你不知道为什么你不能将目标文件集成到消费csproj文件中,然后当你将这个nuget包添加到项目时,{ {1}}文件将集成到正在使用的csproj文件中。

首先要确保nuget包正确无误:

这是我的.targets文件:

.nuspec

您应该确保<?xml version="1.0"?> <package > <metadata> <id>My.Assembly</id> <version>1.0.0</version> <authors>Admin</authors> <owners>Admin</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="bin\**" target="lib" /> <file src="*.targets" target="build" /> </files> </package> 文件与.targets文件位于同一文件夹中,在这种情况下,此命令.nuspec可以包含{ {1}}将文件放入nuget包中。

注意: .targets文件的名称必须与您的软件包ID相匹配,对于您的情况,.targets的名称必须为我的。 Assembly.targets

打包src="*.targets"后,您将获得以下结构nuget包:

enter image description here

然后将此软件包安装到您的项目中,安装后,卸载项目,编辑项目文件,在.targets文件中,将导入以下代码:

.nuspec

现在,.csproj文件已集成到正在使用的csproj文件中。

此外,此解决方案存在问题,因为lib文件夹中的dll将自动添加为参考,在项目文件中创建以下内容:

<Import Project="..\packages\My.Assembly.1.0.0\build\My.Assembly.targets" Condition="Exists('..\packages\My.Assembly.1.0.0\build\My.Assembly.targets')" />

所以我们无法在lib文件夹中设置dll文件,我们可以将dll文件设置到tools文件夹中,然后在.targets文件中添加一个目标,将dll文件从tools文件夹复制到lib文件夹,然后再构建项目:

.targets

有关详细信息,请参阅Arie R在您引用的主题中的答案:

How to create a nuget package with both release and debug dll's using nuget package explorer?

希望这有帮助。