您好,我想知道如何处理这种情况:
我跟着this answer但是我 从来没有将目标文件集成到消费的csproj文件中 那个版本设置为固定数字?
这是我的nuspec文件内容:
SELECT column1, column2, column3 FROM table
建议在这做什么?
(使用NuGet版本:4.4.1.4656)
答案 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包:
然后将此软件包安装到您的项目中,安装后,卸载项目,编辑项目文件,在.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?
希望这有帮助。