【发布时间】:2016-05-17 10:42:23
【问题描述】:
我创建了一个 NuGet 包 libtidy,它被推送到团队服务源。
当我尝试通过 NuGet 控制台安装时出现错误
未能添加对“libtidy”的引用
我已阅读此Stack Overflow post,其中 OP 有类似的问题,但我无法解决问题 - 我已经尝试过:
- 删除包文件夹内的所有文件夹并更新
- 从提升的命令提示符处执行
regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb" - 从包管理器控制台执行
Uninstall-Package libtidy -force(这不起作用,因为未安装包 git clean -dfx- 清除 nuget 缓存
- 手动删除.nuget目录下的libtidy目录
编辑
做了一些研究,这可能与 libtidy.dll 不是托管代码有关吗?事实上它是ANSI-C。在我们的应用程序中,我们使用 TidyManaged 作为包装器,它是托管的,并通过 nuget 成功安装。目前,如果我们手动将 libtidy.dll 复制到 bin 中,它可以正常工作,但如果构建过程将 libtidy.dll 拉入会更好,也许作为 Tidymanaged 安装的一部分,它目前没有。
EDIT2
param($installPath, $toolsPath, $package, $project)
$file = $project.ProjectItems.Item("libtidy.dll");
If ($file -eq $null)
{
$project.ProjectItems.AddFromFile("libtidy.dll");
$file = $project.ProjectItems.Item("libtidy.dll");
}
$file.Properties.Item("CopyToOutputDirectory").Value = [int]1;
EDIT3
编辑 3:
我是
a) 将libtidy.dll 和Install.ps1 放在nuget spec 生成的清单中名为nuget-libtidy 的目录中
我有:
<?xml version="1.0"?>
<package >
<metadata>
<id>nuget-libtidy</id>
<version>1.0.0</version>
<authors>Name</authors>
<owners>Name</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>nuget-libtidy</description>
<copyright>Copyright 2016</copyright>
<tags>nuget-libtidy</tags>
</metadata>
<files>
<file src="libtidy.dll" target="content" />
<file src="Install.ps1" target="tools" />
</files>
</package>
当我运行 nuget pack 时,我收到以下警告:
WARNING: 1 issue(s) found with package 'nuget-libtidy2'.
Issue: Assembly outside lib folder.
Description: The assembly 'content\libtidy.dll' is not inside the 'lib' folder and hence it won't be added as reference when the package is installed into a project.
Solution: Move it into the 'lib' folder if it should be referenced.
b) 当我们构建应用程序时,libtidy.dll 被放置在项目的根目录(不是 bin)& 在输出窗口中得到以下错误:
Added package 'nuget-libtidy' to 'packages.config'
Executing script file <path>\nuget-libtidy\tools\Install.ps1'...
Cannot add a link to the file libtidy.dll. There is already a file of the same name in this folder.
At <path>\nuget-libtidy\tools\Install.ps1:7 char:5
+ $project.ProjectItems.AddFromFile("libtidy.dll");
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
Successfully installed 'nuget-libtidy' to <Namepace>
【问题讨论】:
-
请提供你的vs版本,什么是Service Pack?
标签: .net visual-studio nuget