【问题标题】:Octopack fails to build when I add dependencies当我添加依赖项时,Octopack 无法构建
【发布时间】:2013-01-24 11:01:12
【问题描述】:

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\Projects\WebCrawlerMVC\WebCrawlerMVC..\packages\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”-版本“1.0.0.0” -NoPackageAnalysis”以代码 1 退出。WebCrawlerMVC

我不太清楚这意味着什么,如果我没有添加依赖项,它会在发布时正常构建,否则会返回此错误。

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

【问题讨论】:

    标签: nuget nuget-package octopus-deploy


    【解决方案1】:

    如果您查看完整的构建日志,您应该能够找到更多信息,而不仅仅是上面的错误行 - 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 包不能有依赖项。

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

    【讨论】:

      【解决方案2】:

      看起来倒数第二行的末尾缺少一个 >。 8)

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

      也许这是相关的?

      【讨论】:

        【解决方案3】:

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

        dependencies 元素是 metadata 元素的子元素

        我想这就是你在运行 nuget pack 时出错的原因

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-28
          • 2015-11-06
          • 2014-10-05
          相关资源
          最近更新 更多