我有我的nuget包,我们叫它一个依赖于另一个公共包Nunit的。跑步者
当A依赖于n单位时。运行器它没有添加我需要的程序集到我的项目中,我依赖的程序集在NUnit.Runners.2.6.3toolslib所以,因为nuget只添加对lib中的程序集的引用,我认为我需要添加一个Install。我的nuget包
现在有
param($installPath, $toolsPath, $package, $project)
$NunitRunners = join-path -path $packagesFolder -childpath "NUnit.Runners.2.6.3"
$project.Object.References.Add($NunitRunners+"nunit.core")
$project.Object.References.Add($NunitRunners+"nunit.core.interfaces")
但是它抛出
Exception calling "Add" with "1" argument(s): "Unspecified error
(Exception from HRESULT: 0x80004005 (E_FAIL))" At
+ $project.Object.References.Add <<<< ($NunitRunners+"nunit.core.dll")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
关于为什么这是抛出"添加"超级欢迎的任何指针
我的安装。Ps1(此处供参考)
param($installPath, $toolsPath, $package, $project)
write-host "Install path" $installPath
$packagesFolder = Split-Path -Path $installPath -Parent
write-host "packages folder" $packagesFolder
write-host $toolsPath
write-host $package
$NunitRunners = join-path -path $packagesFolder -childpath "NUnit.Runners.2.6.3"
write-host $NunitRunners
$project.Object.References.Add($NunitRunners+"nunit.core")
$project.Object.References.Add($NunitRunners+"nunit.core.interfaces")
顺便说一下,我只需要引用这两个程序集,不需要引用nunit。framework
注意:我确实在codeplex中看到了这个线程,但没有任何解决方案(即项目不是客户端配置文件,程序集不应该在GAC上)
NUnit.Core.dll和NUnit.Core.Interfaces.dll的路径不正确。
当前$NunitRunners在指向packagesNUnit.Runners.2.6.3toolslib
时指向了packagesNUnit.Runners.2.6.3
。
所以你可以改变$NunitRunners的路径,或者在你添加引用的时候添加它:
$project.Object.References.Add($NunitRunners+"toolslibnunit.core.dll")
$project.Object.References.Add($NunitRunners+"toolslibnunit.core.interfaces.dll")
所以你已经尝试指定了NUnit。在你的nuspec文件中运行2.6.3依赖,它不工作?你有没有尝试指定NUnit核心作为一个依赖?
<dependencies>
<dependency id="NUnit" version="2.6.3" />
<dependency id="NUnit.Runners" version="2.6.3" />
</dependencies>
如果这不起作用,您还可以尝试在文件部分中包含NUnit dll,并将它们包含在包A中,但这并不理想。