具有netstandard2.0引用的.net 4.8项目将不会通过msbuild生成

具有netstandard2.0引用的.net 4.8项目将不会通过msbuild生成,msbuild,.net-standard,Msbuild,.net Standard,解决方案在VS2019中构建得很好,但当构建代理上的msbuild获得我们的解决方案时,它会抱怨对几个DLL的引用。 我刚刚添加了对一个NuGet包的引用,该包引入了netstandard 2.0依赖项,所以这似乎是问题所在。 我注意到,如果我进入构建服务器并首先在VS中构建解决方案,那么相同的msbuild命令行随后将成功。因此,在正常的构建情况下,这些netstandard DLL的构建似乎不是为了将它们包含在其他项目编译中 F:\Agents\MyAgent\u work\18\s\src

解决方案在VS2019中构建得很好,但当构建代理上的msbuild获得我们的解决方案时,它会抱怨对几个DLL的引用。
我刚刚添加了对一个NuGet包的引用,该包引入了netstandard 2.0依赖项,所以这似乎是问题所在。
我注意到,如果我进入构建服务器并首先在VS中构建解决方案,那么相同的msbuild命令行随后将成功。因此,在正常的构建情况下,这些netstandard DLL的构建似乎不是为了将它们包含在其他项目编译中

F:\Agents\MyAgent\u work\18\s\src\WS\u Reports.metaproj:警告MSB3268:无法解析主引用“F:\Agents\MyAgent\u work\18\b\My.Project\My.Project.dll”,因为它间接依赖于框架程序集“netstandard,Version=2.0.0.0,Culture=neral,PublicKeyToken=CC7B13FFCD2DD51”这在目前的目标框架内无法解决。“.NETFramework,版本=v4.8”。要解决此问题,请删除引用“F:\Agents\MyAgent\u work\18\b\My.Project\My.Project.dll”,或将应用程序重新定位到包含“netstandard,version=2.0.0.0,Culture=neutral,PublicKeyToken=CC7B13FFCD2DD51”的框架版本

以下是解决方案文件对其msbuild引发错误的项目的声明….可以查看对错误中显示的DLL的项目引用(上面的示例)。请注意,这和我将新的netstandard2.0包添加到目标框架v4.8的项目

Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WS.Reports", "WebServices\WS.Reports\", "{C47BAAE6-0708-4D43-83B8-92405B31A3E0}"
    ProjectSection(WebsiteProperties) = preProject
        SccProjectName = "SAK"
        SccAuxPath = "SAK"
        SccLocalPath = "SAK"
        SccProvider = "SAK"
        TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.8"
        ProjectReferences = "{2222173A-112A-44F8-A614-C7CCBDACEFE8}|My.Project.Bus.dll;{222924FE-877B-4E18-B960-94DED3DB6DF2}|MyProject.Protocols.Shared.dll;{222F5846-55E6-4541-B43B-E49674963E02}|MyProject.AuthProtocols.dll;{2224BC03-6C7E-4E15-B158-D9BD03D0E8B3}|My.Project.dll;{222BAF47-1C9F-4A56-9152-B4240A188612}|My.Project.Images.dll;{222FE788-27B1-4B03-B052-BCFFF251C15A}|My.Project.Legacy.dll;"
        Debug.AspNetCompiler.VirtualPath = "/WS.Reports"
        Debug.AspNetCompiler.PhysicalPath = "WebServices\WS.Reports\"
        Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WS.Reports\"
        Debug.AspNetCompiler.Updateable = "true"
        Debug.AspNetCompiler.ForceOverwrite = "true"
        Debug.AspNetCompiler.FixedNames = "false"
        Debug.AspNetCompiler.Debug = "True"
        Release.AspNetCompiler.VirtualPath = "/WS.Reports"
        Release.AspNetCompiler.PhysicalPath = "WebServices\WS.Reports\"
        Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WS.Reports\"
        Release.AspNetCompiler.Updateable = "true"
        Release.AspNetCompiler.ForceOverwrite = "true"
        Release.AspNetCompiler.FixedNames = "false"
        Release.AspNetCompiler.Debug = "False"
        VWDPort = "17515"
        VWDDynamicPort = "false"
        SlnRelativePath = "WebServices\WS.Reports\"
        StartServerOnDebug = "false"
    EndProjectSection
EndProject

可能我需要抛出错误的项目或带有netstandard引用的项目以v4.8和netstandard2.0为目标?

在web.config文件中,添加对netstandard程序集的引用:

<system.web>
  <compilation debug="true" targetFramework="4.8">
    <assemblies>
      <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/>
   </assemblies> 
 </compilation>
 <httpRuntime targetFramework="4.8" />
 ...

...

4.8引用netstandard2.0应该可以,无需多目标。您是否只需要更新的msbuild版本?感谢您对multitarget的确认…这似乎不再有意义(4.7.2及更高版本)。将检查msbuild版本。这似乎不太可能是错误的,因为4.8项目(以及其他一些.netcore3.1)在这个netstandard参考之前就已经开始工作了。“C:\Program Files(x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe”运气不好。在其他一些帖子上尝试过。