带有netstandard库的msbuild VS2017解决方案

Aar*_*on0 4 .net msbuild visual-studio-2017 .net-standard

我创建了一个VS2017解决方案,其中包含一个针对.NETStandard 1.4的示例库

为此,我添加了一个类:

using System;
namespace ExampleNetstandard
{
    public class Example
    {
        public string A { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

从Visual Studio可以很好地进行编译,但是如果您清除bin和obj目录,然后使用以下命令从msbuild进行构建:msbuild ExampleNetstandard.sln / t:Build / p:Configuration = Release / p:Platform =“ Any CPU”

我收到以下错误:

C:\ Users \ Aaron \ AppData \ Local \ Temp.NETStandard,Version = v1.4.AssemblyAttributes.cs(4,20):错误CS0400:在全局命名空间中找不到类型或名称空间名称'System' (是否缺少程序集引用?)[D:\ src \ Example Netstandard \ ExampleNetstandard.csproj] obj \ Release \ netstandard1.4 \ ExampleNetstandard.AssemblyInfo.cs(6,12):错误CS0246:类型或命名空间名称'找不到系统(您是否缺少using指令或程序集引用?)[D:\ src \ ExampleNetstandard \ ExampleNets tandard.csproj]

我需要做些特定的事情才能从msbuild中构建这种项目吗?我正在对此进行调查,因为我们的TeamCity服务器在实际项目中抛出了此错误

Ter*_*Dev 6

如果删除了bin和obj目录,则需要再次还原软件包。运行时dotnet restore,在obj目录中会发出一些文件,您需要进行编译。另外,对于dotnet核心项目,您应该坚持使用dotnet cli。由于dotnet cli附带了正确的msbuild for core版本。

您可以通过运行来还原软件包dotnet restore,然后运行dotnet build -c Release以编译您的应用程序。每当您清理obj目录时,您都必须运行dotnet restore