我有一个.net 4.71经典项目,我试图向其中添加我生成的nuget包。 当我使用Visual Studio包管理器cli或接口文件时,将其添加到解决方案中。 当我通过nuget.exe(4.5.1.4879)添加软件包时,这些文件的行为符合预期,不会添加到解决方案中,而只会在构建时输出。
这可能是什么原因以及如何防止这种行为?
使用Update-Package或UI时,它是.post-build文件夹和* .targets添加到解决方案中。
软件包的nuspec文件:
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>idhere</id>
<version>0.1.0.0</version>
<authors>names here</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description></description>
</metadata>
<files>
<file src="bin/release/project.dll" target="lib\net461" />
<file src="bin/release/project.pdb" target="lib\net461" />
<file src="*.ps1" target="build" />
<file src=".post-build\*.*" target="build\.post-build" />
<file src="*.targets" target="build" />
<file src="**\*.cs" target="src" exclude="**\bin\**;**\obj**;**\Properties\**"/>
</files>
</package>
答案 0 :(得分:1)
这可能是什么原因以及如何防止这种行为?
那是因为安装nuget软件包时,软件包管理器控制台和Nuget.exe
的行为不同。恐怕您无法阻止这种行为。
使用nuget.exe安装软件包时, NuGet CLI不会修改项目文件或package.config ;这样与还原类似,它只将软件包添加到磁盘,而不会更改项目的依赖项。参见NuGet CLI reference:
相反,操作在“程序包管理器”上安装程序包:
将软件包及其依赖项安装到项目中。
此外,我们不能在Visual Studio外部使用Package Manager控制台Powershell,因为Package Manager控制台提供对Visual Studio对象的访问。
https://github.com/NuGet/Home/issues/1512
所以,这就是程序包管理器控制台和Nuget.exe具有不同行为的原因。
希望这会有所帮助。