Сборка стандартной библиотеки .NET 1.4 с использованием .NET Framework 4.6.1 без Visual Studio

Мы пытаемся создать проект .NET Standard Library 1.4 с использованием .NET Framework 4.6.1 с использованием командной строки без Visual Studio в Windows Server 2012 RC2 для целей автоматизации.

Я установил на сервер следующее:

.Net Framework 4.6.1
.Net Framework 4.6.1 Targeting pack
Microsoft Build Tools 2015

В этом проекте стандартной библиотеки .NET говорится, что на ProjectA ссылаются два других проекта стандартной библиотеки .NET ProjectB и ProjectC.

Сохранение ProjectA в качестве запускаемого проекта

Когда я пытаюсь скомпилировать ProjectA после восстановления dotnet с помощью командной строки dotnet build, я получаю следующую ошибку:

C:\Document\ProjectA>dotnet build

Project ProjectA (.NETStandard,Version=v1.4) will be compiled because 
expected outputs are missing

Compiling ProjectA for .NETStandard,Version=v1.4
C:\Program Files\dotnet\dotnet.exe compile-csc 
@C:\Document\ProjectA\obj\Debug\netstandard1.4\dotnet-compile.rsp returned 
Exit Code 1

C:\Document\ProjectA\Sample.cs(1,17): error CS0234: The type or namespace name 
'ProjectB' does not exist in the namespace 'XYZ' (are you missing an 
 assembly reference?)

C:\Document\ProjectA\Sample.cs(2,17): error CS0234: The type or namespace name 
'ProjectC' does not exist in the namespace 'XYZ' (are you missing an 
 assembly reference?)

Compilation failed.
0 Warning(s)
2 Error(s)

Пожалуйста, помогите мне скомпилировать решение из командной строки. Образец кода:

using XYZ.ProjectB;
using XYZ.ProjectC;
using System;


namespace XYZ.ProjectA
{
    public class Sample : ISample
    {
        public Void GetMessage()
        {
            var s=XYZ.ProjectB.GetList();
            Console.Write("");      
        }
    }
}

И ProjectB, и Project C также являются .Netstandard Lib.


person Priyadharsini    schedule 14.07.2017    source источник
comment
The type or namespace name 'ProjectB' does not exist in the namespace 'XYZ' Этим все сказано! У проектов разные корневые пространства имен!   -  person Suraj S    schedule 14.07.2017
comment
Спасибо за ответ, Сурадж. Он существует в том же пространстве имен. Он правильно компилируется и выполняется в Visual Studio. Но он выдает ошибку, когда я компилирую с помощью командной строки.   -  person Priyadharsini    schedule 14.07.2017
comment
Вам нужно будет предоставить код в ABC.cs   -  person Suraj S    schedule 14.07.2017
comment
Входит в вопрос   -  person Priyadharsini    schedule 14.07.2017
comment
если он создается в VS, но не в командной строке, я бы рассмотрел другие факторы. Что делать, если вы запускаете в режиме администрирования?   -  person Joe_DM    schedule 14.07.2017
comment
Вы используете визуальную студию для сборки на той же машине, на которой вы пытаетесь создать ее в командной строке? Если это две разные машины, может быть, посмотреть последнюю версию .Net Core Tools для сервера?   -  person Joe_DM    schedule 14.07.2017
comment
Никакой другой машины. Я создаю его с помощью визуальной студии на локальном компьютере и командной строки на сервере. Также все основные инструменты .net были установлены одинаково как для локального, так и для сервера.   -  person Priyadharsini    schedule 14.07.2017
comment
И Джо, я не пробовал как администратор. позвольте мне проверить это и сообщить вам.   -  person Priyadharsini    schedule 14.07.2017
comment
Где определено корневое пространство имен XYZ? что-то вроде namespace XYZ{ ....} ?   -  person Suraj S    schedule 14.07.2017
comment
Это стандартная библиотека .net на основе project.json? они не поддерживаются инструментами сборки и требуют полной установки веб-инструментов VS +.   -  person Martin Ullrich    schedule 14.07.2017
comment
Спасибо за ваш ответ Мартин. да, это проект стандартной библиотеки .net на основе project.json. Сначала мы восстанавливаем библиотеку project.json, используя команду восстановления dotnet для создания project.json.lock. Затем я попытался собрать с помощью dotnet build. Мартин, как насчет вашего мнения об использовании команды MSBuild.   -  person Priyadharsini    schedule 15.07.2017
comment
По какой причине вы все еще используете project.json? Я настоятельно рекомендую вам обновить инструменты до финальной версии 1.0. Это сделает все намного проще.   -  person Jon Skeet    schedule 15.07.2017


Ответы (1)


Мне удалось разрешить вышеуказанный случай, создав проект с помощью MSBuild.

Как я упоминал ранее, после того, как на сервере установлена ​​​​следующая структура,

 1. .Net Framework 4.6.1 
 2. .Net Framework 4.6.1 Targeting pack
 3. Microsoft Build Tools 201

И я пытаюсь создать переносимые проекты, ориентированные на .NET Standard, с сервера, на котором Visual Studio не была установлена, мне удалось скопировать следующие файлы и папку с компьютера, на котором установлена ​​Visual Studio, на мой сервер сборки.

  1. C:\Program Files (x86)\Microsoft SDK\Portable\v14.0
  2. C:\Program Files (x86)\MSBuild\Microsoft\Portable
  3. C:\Program Files (x86)\ReferenceAssemblies\Microsoft\Framework.NETPortable
  4. C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet

И установил Microsoft .NET Portable Library Reference Assemblies 4.6 на сервер.

Затем вызывается версия MsBuild для сборки вашего решения,

C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe MySolution.sln 

Вышеуказанные шаги помогли мне создать стандартный проект библиотеки .NET без установки Visual Studio на сервере сборки.

Я надеюсь, что приведенная выше информация поможет кому-то!

person Priyadharsini    schedule 19.07.2017