添加依赖项时,Octopack无法构建

时间:2013-01-24 11:01:12

标签: nuget nuget-package octopus-deploy

Octopack无法使用以下xml构建

<?xml version="1.0"?>
<package >
  <metadata>
    <id>WebCrawlerMVC</id>
    <version>1.0.0.0</version>
    <title>Web Crawler</title>
    <authors>lardern</authors>
    <owners>Nostrum Group</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>packaging webcrawler mvc</description>
    <releaseNotes>no release notes</releaseNotes>
    <copyright>Copyright 2013</copyright>
  </metadata>
   <dependencies>
        <dependency id="Ninject" version="3.0.1.10" />
        <dependency id="HtmlAgilityPackHelpers" />
    </dependencies>
    <files src="C:\Users\lardern\Documents\Visual Studio 2010\Projects\WebCrawlerMVC\packages\Ninject.3.0.1.10\lib\net40\Ninject.dll"/>
    <files src="C:\Users\lardern\Documents\Visual Studio 2010\Projects\HtmlAgilityPack\HtmlAgilityPack\HtmlAgilityPackHelpers\bin\Release\HtmlAgilityPackHelpers.dll" />
</package>

我收到的错误是

  

错误2命令“”C:\ Users \ lardern \ Documents \ Visual Studio   2010 \项目\ WebCrawlerMVC \ WebCrawlerMVC .. \包\ OctoPack.1.0.111 \ TOOLS \ NuGet.exe”   打包“C:\ Users \ lardern \ Documents \ Visual Studio   2010 \项目\ WebCrawlerMVC \ WebCrawlerMVC \ WebCrawlerMVC.nuspec”   -OutputDirectory“bin”-basePath“C:\ Users \ lardern \ Documents \ Visual Studio 2010 \ Projects \ WebCrawlerMVC \ WebCrawlerMVC”-Version“1.0.0.0”   -NoPackageAnalysis“退出代码1. WebCrawlerMVC

我不太清楚这意味着什么,如果我没有添加依赖项,它会在版本中构建正常,否则会出现此错误。

编辑:我编辑了上面的代码,感谢发现错误的adam,但错误仍然存​​在。       同时取出每个依赖项以查看是否导致错误,两次都失败。

3 个答案:

答案 0 :(得分:4)

如果您查看完整的构建日志,您应该能够找到更多信息,而不仅仅是上面的错误行--NuGet.exe可能会抱怨它们。

然而,八达通包裹should not include dependencies anyway

  

另一个不能很好地转换为Octopus的NuGet功能是依赖项。 NuGet具有跟踪包之间的依赖关系的便利功能。例如,当像NHibernate这样的包依赖于像log4net这样的包时,就会使用它。 NuGet将安装NHibernate,解决依赖关系,并安装log4net。值得注意的是,NuGet会将它们安装到磁盘上的两个独立文件夹中:

packages/NHibernate.x.y.z
packages/log4net.x.y.z
     

虽然这对于通过Visual Studio引用的库是有意义的,但由于与上述相同的原因,它在Octopus中没有意义。例如,如果您的Octopus应用程序包依赖于log4net,那么您将拥有:

packages/YourApp.x.y.z  
packages/log4net.x.y.z
     

在运行时,YourApp下的可执行文件或ASP.NET站点会尝试在log4net中调用方法,但由于找不到DLL而失败。虽然理论上可以使用配置文件中的探测路径来解决,但实际上最好避免这种方法。

     

因此,Octopus NuGet包不能具有依赖性。

     

相反,您需要使用的任何库都应该捆绑在包内的标准二进制文件夹

答案 1 :(得分:1)

看起来有一个&gt;在倒数第二行结束时丢失。 8)

编辑:好的,也许不是那样。但我发现this link描述了路径中空间的问题。

也许这是相关的?

答案 2 :(得分:0)

https://docs.nuget.org/create/nuspec-reference#specifying-dependencies

  

dependencies元素是元数据元素的子元素

我想这就是为什么你在运行nuget pack

时遇到错误的原因