msbuild VS2017解决方案中包含netstandard库

时间:2017-04-04 07:50:55

标签: .net msbuild visual-studio-2017 .net-standard

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

对此我添加了一个类:

using System;
namespace ExampleNetstandard
{
    public class Example
    {
        public string A { get; set; }
    }
}

从视觉工作室它编译得很好,但如果你清除bin& obj目录然后使用以下命令从msbuild构建:msbuild ExampleNetstandard.sln / t:Build / p:Configuration = Release / p:Platform ="任何CPU"

我收到以下错误:

  

C:\用户\亚伦\应用程序数据\本地\ Temp.NETStandard,版本= v1.4.AssemblyAttributes.cs(4,20):   错误CS0400:类型或名称空间名称'系统'无法找到   在全局命名空间中(您是否缺少程序集引用?)   [D:\ src \ Example Netstandard \ ExampleNetstandard.csproj]   OBJ \发布\ netstandard1.4 \ ExampleNetstandard.AssemblyInfo.cs(6,12):   错误CS0246:类型或命名空间名称'系统'无法找到   (您是否缺少using指令或程序集引用?)   [D:\ src \ ExampleNetstandard \ ExampleNets tandard.csproj]

为了让这种项目从msbuild构建,我需要做些什么吗?我正在研究这个问题,因为我们的TeamCity服务器在实际项目中抛出了这个错误

1 个答案:

答案 0 :(得分:6)

如果你吹掉你的垃圾箱和obj目录,你需要再次恢复你的包裹。当您运行dotnet restore时,您需要在obj目录中发出一些编译所需的文件。你也应该坚持使用dotnet cli进行dotnet核心项目。由于dotnet cli附带适当版本的msbuild for core。

您可以通过运行dotnet restore来恢复您的软件包,然后运行dotnet build -c Release来编译您的应用。无论何时清理obj目录,都必须运行dotnet restore