在VS2015中无法运行NuGet包命令。

6
我曾经在同一台机器上多次使用这种方法完成许多项目,但是出于某些原因,以下操作对我来说无法正常工作:
  1. 从NuGet软件包管理器中添加所需的DLL(本例中为filehelpers)
  2. 安装Costura.Fody(默认情况下包括Fody 2.0.6;2.0.7版本也可用,我尝试了两个版本,结果相同)
  3. 使用Package Manager控制台运行命令Install-CleanReferencesTarget(从https://github.com/Fody/Costura复制/粘贴)
当我执行第三步(直到现在都一直有效)时,我会收到以下错误提示:
PM> Install-CleanReferencesTarget
Install-CleanReferencesTarget : The term 'Install-CleanReferencesTarget' is not recognized
as the name of a cmdlet, function, script file, or operable program. Check the spelling of
the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Install-CleanReferencesTarget
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Install-CleanReferencesTarget:String) [],
                              CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

我已经尝试重新创建项目、重启电脑、重启VS、以管理员身份运行VS等,但结果相同。我还确认了相关的DLL(FileHelpers.dll)已被设置为本地复制。
同时,我查看了另一个包含相同DLL且没有出现此问题的项目中的FodyWeavers.xml文件,发现它与这个有问题的项目中的文件完全相同。
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
  <Costura/>
</Weavers>

有没有人知道为什么突然会出现这种情况?



您的意思是命令行:Install-CleanReferencesTarget可以在另一个项目上成功执行吗?作为解决方法,您可以在项目文件中使用以下目标:<Target AfterTargets="AfterBuild;NonWinFodyTarget" Name="CleanReferenceCopyLocalPaths" > <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" /> </Target> 看起来这个命令行不被NPM支持,您也可以在此处提交此问题:https://github.com/Fody/Costura/issues。 - Leo Liu
这是第一次它没有起作用。我应该把<Target>块放在哪里?在<Costura>标签内吗?我已经把它放在那里了,但清理/构建解决方案并没有捆绑DLL。 - Anders
不,<Target>块应该放在你的项目文件中(右键单击项目->卸载项目->编辑.xxproj文件)。 - Leo Liu
3个回答

4
根据最新文档,看起来在较新的版本中已被删除,该功能将自动启用。可以通过更改Costura配置文件来禁用清理操作。

DisableCleanup

As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.

Defaults to false

<Costura DisableCleanup='true' />

更多的配置选项详情请参考此帖子


1
  1. 打开NuGet包管理控制台(View->Other Windows),并使用此处的命令行选项:创建和发布包[^]
  2. 从源代码编译此扩展程序:NuGet包项目扩展程序[^] (源代码位于此处:Home[^])

0

虽然不是答案,但我刚遇到了同样的问题,并成功找到了解决方法。

最终,我没有使用cmdlet,而是从这里底部将目标添加到我的proj文件中。这似乎起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接