nuget restore在代码构建中失败,但在本地和docker中工作

nuget restore在代码构建中失败,但在本地和docker中工作,docker,aws-codebuild,Docker,Aws Codebuild,我正在尝试让aws代码管道和代码构建为.Net framework web应用程序工作 我的buildspec看起来像这样 version: 0.2 env: variables: PROJECT: TestCodeBuild1 DOTNET_FRAMEWORK: 4.7.2 phases: build: commands: - dir - nuget restore $env:PROJECT.sln - msbuild $e

我正在尝试让aws代码管道和代码构建为.Net framework web应用程序工作

我的buildspec看起来像这样

version: 0.2

env:
  variables:
    PROJECT: TestCodeBuild1
    DOTNET_FRAMEWORK: 4.7.2
phases:
  build:
    commands:
      - dir
      - nuget restore $env:PROJECT.sln
      - msbuild $env:PROJECT.sln /p:TargetFrameworkVersion=v$env:DOTNET_FRAMEWORK /p:Configuration=Release /p:DeployIisAppPath="Default Web Site" /p:PackageAsSingleFile=false /p:OutDir=C:\codebuild\artifacts\ /t:Package
artifacts:
  files:
    - '**/*'
  base-directory: 'C:\codebuild\artifacts\_PublishedWebsites\${env:PROJECT}_Package\Archive\'
buildspec中的“dir”行放在那里只是为了确认它在正确的目录中,并且所需的文件夹在那里,它们在那里

它正在为构建环境使用以下图像

mcr.microsoft.com/dotnet/framework/sdk:4.7.2
当它运行时,我得到以下警告,当它到达nuget还原

WARNING: Error reading msbuild project information, ensure that your input solution or project file is valid. NETCore and UAP projects will be skipped, only packages.config files will be restored.
msbuild随后也会失败,但我猜这可能与nuget restore没有正常工作有关

我已经确认项目和解决方案是正确的。如果我从本地环境运行“nuget restore”,它工作正常,没有任何错误或警告

我想这可能是docker环境特有的东西,所以我尝试创建一个Dockerfile,就像这样

FROM mcr.microsoft.com/dotnet/framework/sdk:4.7.2

WORKDIR /app

COPY . .

RUN nuget restore
这也很好。“docker build.”运行时没有任何警告

所以我不确定为什么这会在代码构建中失败。就我所知,一切都是正确的,我还没有找到任何方法在本地重现这个问题


其他论坛帖子只是建议更正项目文件中的包问题。但是,就我所见,项目包没有任何问题。

以下是我所做的事情,它似乎已经起到了作用:

1.:buildspec.yml

  • 然后我下载了nuget.exe()并将其放入根目录(与.sln文件相同的目录)
  • 当我将提交推送到AWS上的分支时,“.\nuget.exe”成功还原了所有包。我正在使用Docker映像“microsoft/aspnet:4.6.2”


    希望它能帮助到别人。

    以下是我所做的,而且它似乎起到了作用:

    1.:buildspec.yml

  • 然后我下载了nuget.exe()并将其放入根目录(与.sln文件相同的目录)
  • 当我将提交推送到AWS上的分支时,“.\nuget.exe”成功还原了所有包。我正在使用Docker映像“microsoft/aspnet:4.6.2”


    希望它能帮助别人。

    你找到解决方案了吗?@joe没有,不幸的是,我从来没有想到这一点。我决定继续使用Azure DevOps。codebuild中的Windows支持似乎非常初级,似乎还没有准备好用于生产应用程序。你找到解决方案了吗?@joe没有,不幸的是,我从来没有想到这一点。我决定继续使用Azure DevOps。codebuild中的Windows支持似乎相当初级,似乎还没有准备好用于生产应用程序。
    version: 0.2
    env:
      variables:
        SOLUTION: .\MyProject.sln
        PACKAGE_DIRECTORY: .\packages
        DOTNET_FRAMEWORK: 4.6.2
        PROJECT: MyProjectName
    phases:
      build:
        commands:
          - .\nuget restore
          - >-
            msbuild $env:PROJECT.csproj
            /p:TargetFrameworkVersion=v$env:DOTNET_FRAMEWORK
            /p:Configuration=Release /p:DeployIisAppPath="MySite"
            /p:PackageAsSingleFile=false /p:OutDir=C:\codebuild\artifacts\
            /t:Package
    artifacts:
      files:
        - '**/*'
      base-directory: 'C:\codebuild\artifacts\_PublishedWebsites\${env:PROJECT}_Package\Archive\'