Deployment dotnet 3.1定位的程序集';的清单定义与程序集引用不匹配

Deployment dotnet 3.1定位的程序集';的清单定义与程序集引用不匹配,deployment,compiler-errors,dependencies,version,.net-core-3.1,Deployment,Compiler Errors,Dependencies,Version,.net Core 3.1,我已经为此挣扎了两天了。我在互联网上到处寻找,尝试了许多不同的东西,都没有得到任何帮助 我有一个包含大约4个项目的.NETCore3.1自包含解决方案。我正在Windows桌面上构建应用程序。当我把它推到BitBucket时,我的管道就会运行。看起来是这样的: image: mcr.microsoft.com/dotnet/core/sdk pipelines: default: - step: caches: - dotnetcore

我已经为此挣扎了两天了。我在互联网上到处寻找,尝试了许多不同的东西,都没有得到任何帮助

我有一个包含大约4个项目的.NETCore3.1自包含解决方案。我正在Windows桌面上构建应用程序。当我把它推到BitBucket时,我的管道就会运行。看起来是这样的:

image: mcr.microsoft.com/dotnet/core/sdk

pipelines:
  default:
    - step:
        caches:
          - dotnetcore
        script:
          # Restore, Publish and Release the .NET core project
          - dotnet restore
          - dotnet publish ProjectsApi.sln -c Release -r centos.7-x64 -o "deployment" --self-contained
        artifacts:
          - deployment/**
    - step:
        script:
          - pipe: atlassian/sftp-deploy:0.5.3
            variables:
              REMOTE_PATH: $FTP_REMOTE_PATH
              USER: $FTP_USERNAME
              SERVER: $FTP_HOST
              LOCAL_PATH: $FTP_LOCAL_PATH
              EXTRA_ARGS: $FTP_PORT
构建成功,所有内容都上传到我的Cent OS 7服务器。但是,当我尝试运行应用程序时,我得到以下结果:

#/ProjectApi.Api

未处理的异常。System.IO.FileLoadException:无法加载文件或程序集“System.ComponentModel,版本=4.0.4.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a”。定位的程序集清单定义与程序集引用不匹配。(0x8013100) 文件名:“System.ComponentModel,版本=4.0.4.0,区域性=neutral,PublicKeyToken=b03f5f7f11d50a3a”

需要注意的一点是,我曾经使用过System.ComponentModel。我用它来做数据注释,得到了同样的错误。我删除了它们,删除了包,只是想看看它是否能解决问题,但它没有。添加包时,它使用了版本4.3.0。我甚至试着安装4.0.4.0版,只是想看看这是否有帮助,结果还是出现了同样的错误

我试图强迫它识别新的装配,但没有成功:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.ComponentModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.3.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>


我尝试从部署文件夹中删除dll,并将其替换为从计算机中发布的dll,但没有任何帮助。我完全没有主意了。我可以发布解决方案,它在本地运行良好。有什么想法吗?谢谢。

我也一样issue@matt我通过在干净的centos 7服务器上运行应用程序解决了这个问题。我不得不重新安装所有的东西,但效果很好。我认为旧版本的core仍然存在一些问题。此外,我还做了另一个改变。由于某种原因,当我创建一些项目时,它在.csproj文件中使用了不正确的目标框架。检查以确保.csproj文件中的
标记是
netcoreapp3.1
,而不是
netstandard2.0
具有相同的标记issue@matt我通过在干净的centos 7服务器上运行应用程序解决了这个问题。我不得不重新安装所有的东西,但效果很好。我认为旧版本的core仍然存在一些问题。此外,我还做了另一个改变。由于某种原因,当我创建一些项目时,它在.csproj文件中使用了不正确的目标框架。检查以确保.csproj文件中的
标记是
netcoreapp3.1
而不是
netstandard2.0