【问题标题】:msbuild VS2017 solution with netstandard library in itmsbuild VS2017 解决方案,其中包含 netstandard 库
【发布时间】:2017-08-29 07:18:34
【问题描述】:

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

为此我添加了一个类:

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

从visual studio它编译得很好,但如果你清除bin和obj目录,然后使用msbuild从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:找不到类型或名称空间名称“系统” 在全局命名空间中(您是否缺少程序集引用?) [D:\src\ExampleNetstandard\ExampleNetstandard.csproj] obj\Release\netstandard1.4\ExampleNetstandard.AssemblyInfo.cs(6,12): 错误 CS0246:找不到类型或命名空间名称“系统” (您是否缺少 using 指令或程序集引用?) [D:\src\ExampleNetstandard\ExampleNets tandard.csproj]

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

【问题讨论】:

  • 您也可以发布 csproj 文件吗?它应该很短。此外,它是否使用dotnet restore 后跟dotnet build ExampleNetstandard.sln -c Release 构建?如果是这样,在您的 TeamCity 服务器上进行这样的更改是否合适?
  • 感谢您的帮助。 dotnet restore 而不是 nuget restore 解决了这些问题。是的,我的 csproj 很简单:<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard1.4</TargetFramework> </PropertyGroup> </Project>

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


【解决方案1】:

如果你破坏了你的 bin 和 obj 目录,你将需要再次恢复你的包。当您运行 dotnet restore 时,您的 obj 目录中会发出一些文件,您需要进行编译。此外,对于 dotnet 核心项目,您应该坚持使用 dotnet cli。由于 dotnet cli 附带了正确版本的 msbuild for core。

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

【讨论】:

  • 感谢您成功了。我已经用dotnet restore 替换了 TeamCity“Nuget 安装程序”步骤,现在一切正常
  • 我在哪里运行 vs 2017 中的 dotnet 恢复??
  • @PrasaanthNeelakandan 我只是从命令行运行它,我不使用 Visual Studio,所以我不能告诉你。
猜你喜欢
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2014-01-06
  • 2010-09-24
  • 2016-05-15
相关资源
最近更新 更多