程序包管理器控制台vs Nuget.exe生成文件的行为

时间:2018-08-16 14:56:13

标签: visual-studio nuget nuget-package nuspec package-manager-console

我有一个.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>

1 个答案:

答案 0 :(得分:1)

  

这可能是什么原因以及如何防止这种行为?

那是因为安装nuget软件包时,软件包管理器控制台和Nuget.exe的行为不同。恐怕您无法阻止这种行为。

使用nuget.exe安装软件包时, NuGet CLI不会修改项目文件或package.config ;这样与还原类似,它只将软件包添加到磁盘,而不会更改项目的依赖项。参见NuGet CLI reference

enter image description here

相反,操作在“程序包管理器”上安装程序包:

  

将软件包及其依赖项安装到项目中。

enter image description here

此外,我们不能在Visual Studio外部使用Package Manager控制台Powershell,因为Package Manager控制台提供对Visual Studio对象的访问。

https://github.com/NuGet/Home/issues/1512

所以,这就是程序包管理器控制台和Nuget.exe具有不同行为的原因。

希望这会有所帮助。