使用 msbuild 构建 wcf 失败,但可以直接在 Visual Studio 中构建

Building a wcf fails using msbuild, but works building directly in Visual Studio

我正在使用 Visual Studio 2019 构建我的项目,这是一个 .NET Framework 4.6.1 WCF 项目。 构建和调试,甚至发布到文件夹都可以在我的本地机器上从 visual studio 中完美运行。但是尝试在使用 Jenkins 的服务器上对 MSBuild 执行相同操作会产生以下错误消息:

17:03:54  D:\Jenkins\workspace\workspace\R_and_D_IT\WRAP-UI\Wrap.DataAccessDapper\Mappings\ContainerMap.cs(11,33): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. [D:\Jenkins\workspace\workspace\R_and_D_IT\WRAP-UI\AstraZeneca.RD.Wrap.DataAccessDapper\AstraZeneca.RD.Wrap.DataAccessDapper.csproj]

我正在为该映射文件夹中的几乎每个 class 获取这些行之一。

classes 本身就是 dapper 的 fluentmap,这是一个:

public class ContainerMap : EntityMap<Container>
    {
        public ContainerMap()
        {
            Map(x => x.Id).ToColumn("Container_Id");
            Map(x => x.CollectionLazyId).ToColumn("Container_Collection_Id");
            Map(x => x.Name).ToColumn("Name");
            Map(x => x.BarCode).ToColumn("Barcode");
            Map(x => x.TareWeightInMilliGrams).ToColumn("Tare_Weight");
            Map(x => x.SubstanceWeightInMilliGrams).ToColumn("Substance_Weight");
            Map(x => x.VolumeInMicroLiters).ToColumn("Volume");
            Map(x => x.IsInTrash).ToColumn("Is_In_Trash");
            Map(x => x.IsEmptied).ToColumn("Is_Emptied");
            Map(x => x.PlatePositionColumn).ToColumn("Plate_Position_Column");
            Map(x => x.PlatePositionRow).ToColumn("Plate_Position_Row");

            Map(x => x.Collection).Ignore();
        }
    }

我已经尝试使用这个问题解决这个问题并给出答案:

我试过:

这是在我的 JenkinsFile 中构建的命令行执行:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=${CONFIGURATION} /p:Platform=x64 /p:OutputPath="bin/app.publish/${CONFIGURATION}

我不知道MSBuild的版本,它位于服务器上visual studio的2019文件夹中,它带有一个构建工具包,也许需要更新。

我希望这里的任何人都可以帮助我。

编辑1: 我已经将服务器上的 Visual Studio BuildTools 更新到最新版本,msbuild 在本地和服务器上都是相同的版本。我还在服务器上安装了 .net 4.7.2 SDK。但是使用 msbuild 构建在本地工作正常,但在服务器上却不行。

问题已解决,显然 csproj 文件中的 Reference Include="netstandard" 有效。但是 jenkins branchselector 被破坏并默认到错误的分支,所以结果从未改变。这完全是我的错,对于阅读此问题并花时间尝试解决问题的每个人浪费时间,我深表歉意。

希望这对遇到同样问题的人有用。