如何解决NAnt不还原软件包?

时间:2019-06-07 19:52:41

标签: c# nant

我正在尝试使用NAnt构建项目,但是,项目还原的错误是: “ \ 2.2.107 \ Sdks \ Microsoft.NET.Sdk \ targets \ Microsoft.PackageDependencyResolution.targets(208,5):错误NETSDK1064:程序包Microsoft.EntityFrameworkCore.Analyzers,版本2.2.4未找到。可能已删除自从NuGet恢复以来。否则,NuGet恢复可能仅部分完成,这可能是由于最大路径长度限制所致。”

我尝试了以下解决方案:Jenkins not picking up the nuget restored packages

这不成功。

<target name="restore" description="Restore the nuget packages">
    <exec program="${project::get-base-directory()}\.nuget\nuget.exe">
        <arg value="restore"/>
        <arg value="${project::get-base-directory()}\solution.sln"/>
    </exec>
  </target>

  <target name="build" description="Build Solution" depends="clean,restore">
    <call target="build-all"/>
  </target>

  <target name="build-all" description="Build the web and library solutions">
     <exec program="msbuild.exe">
        <arg value="solution.sln"/>
        <arg value="/m"/>
        <arg value="/p:VisualStudioVersion=14.0"/>
        <arg value="/p:Configuration=Release"/>
        <arg value="/t:Clean"/>
        <arg value="/p:Configuration=Release"/>
      </exec>
      <exec program="msbuild.exe">
        <arg value="solution.sln"/>     
        <arg value="/p:VisualStudioVersion=14.0"/>
        <arg value="/p:Configuration=Release"/>
        <arg value="/m"/>
        <arg value="/t:Build"/>
      </exec>
     </target>

1 个答案:

答案 0 :(得分:0)

仅供参考:我有一个使用包引用的.NET(不是核心)项目。我在msbuild exec中添加了一个参数来还原nuget包,并且还指定了nuget包路径。我遇到了路径问题,因为该项目已从32位版本转换为64位版本-在C:\ Windows \ system32 \ config \ systemprofile.nuget \ packages和C:\ Windows \ SysWOW64 \ config \ systemprofile之间引用不一致.nu​​get \ packages。

<exec program="${MSBuildPath}" workingdir="${build.dir}" failonerror="true" >
  <arg value="/v:d"/>
  <arg value="/p:VisualStudioVersion=15.0"/>
  <arg value="/toolsversion:15.0"/>
  <arg value="/p:Configuration=release"/>
  <arg value="/p:Platform=Mixed Platforms"/>
  <arg value="/restore"/>
  <arg value="/restoreProperty:RestorePackagesPath=${NuGetPackagesPath}"/>
  <arg value="/fileLogger"/>
  <arg value="${project.name}.sln"/>
</exec>