2017-02-18 18 views
6

установлен на моей машине:Странная Сложение Ошибка .Net Основной проект

  • Visual Studio Pro 2015
  • Visual Studio 2015 Update 3
  • .NET Ядро 1.0.1 инструменты Preview 2

Примечание. Ошибка сборки возникает на компьютере с Windows 10 и Windows 7, но сборка работает на другой машине Windows 7.

Так что я мерзавец клонировать проект .Net ядро ​​от другого разработчика, и когда я пытаюсь построить в Visual Studio 2015 Я получаю ошибку

«Система не может найти указанный файл в Microsoft.DotNet.Common. Мишени линия 262"

Перейти к строке 262 в C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Dotnet \ Microsoft.DotNet.Common.Targets линии 262 Я вижу

<Dnx 
    RuntimeExe="$(SDKToolingExe)" 
    Condition="'$(_DesignTimeHostBuild)' != 'true'" 
    ProjectFolder="$(MSBuildProjectDirectory)" 
    Arguments="$(_BuildArguments)" 
    /> 

Если удалить этот раздел из Microsoft.DotNet.Common.Targets project строит.

Я знаю, что dnx - это старая утилита .Net Core, моя догадка - это что-то в проекте. Json для библиотеки классов является устаревшим для старой dnx-оснастки и новой утилиты 1.0.1 Preview 2. .Net Core, которую я установил откладывает предыдущую запись project.json на старую запись инструмента dnx в Microsoft.DotNet.Common.Targets, но поскольку у меня нет установленного dnx инструментария, сборка не работает, конечно, это просто догадка.

Я активно искал в Интернете по этому вопросу, я found an article о том, чтобы положить "type": "platform" для Microsoft.NETCore.App зависимости в project.json, но я не использую эту зависимость, я попытался добавить "type": "platform" к моей "NETStandard.Library" зависимости, но это не помогло, то здесь мой project.json:

{ 
    "version": "1.0.1-*", 

    "dependencies": 
    { 
    "Microsoft.AspNetCore.Mvc.Abstractions": "1.1.0", 
    "Microsoft.AspNetCore.Mvc.Core": "1.1.0", 
    "NETStandard.Library": "1.6.1", 
    "TSO.ProductItemList.Model": "1.0.2" 
    }, 

    "frameworks": 
    { 
    "netstandard1.6": 
    { 
     "imports": "dnxcore50" 
    } 
    }, 

    "scripts": 
    { 
    "postcompile": 
    [ 
     "dotnet pack --no-build --configuration %compile:Configuration%", 
     "\"C:\\Program Files (x86)\\NuGet\\nuget\" push \"%project:Directory%\\bin\\%compile:Configuration%\\%project:Name%.%project:Version%.nupkg\" -s http://foo/NugetServer/ -apikey testkey" 
    ] 
    } 
} 

Вот вывод сборки:

1>------ Build started: Project: TSO.ProductItemList.Model, Configuration: Debug Any CPU ------ 
1> C:\Program Files\dotnet\dotnet.exe build "C:\projects\tsl\ProductItemList\src\TSO.ProductItemList.Model" --configuration Debug --no-dependencies 
1> Project TSO.ProductItemList.Model (.NETStandard,Version=v1.6) will be compiled because project is not safe for incremental compilation. Use --build-profile flag for more information. 
1> Compiling TSO.ProductItemList.Model for .NETStandard,Version=v1.6 
1> Producing nuget package "TSO.ProductItemList.Model.1.0.2" for TSO.ProductItemList.Model 
1> TSO.ProductItemList.Model -> C:\projects\tsl\ProductItemList\src\TSO.ProductItemList.Model\bin\Debug\TSO.ProductItemList.Model.1.0.2.nupkg 
1> Producing nuget package "TSO.ProductItemList.Model.1.0.2.symbols" for TSO.ProductItemList.Model 
1> TSO.ProductItemList.Model -> C:\projects\tsl\ProductItemList\src\TSO.ProductItemList.Model\bin\Debug\TSO.ProductItemList.Model.1.0.2.symbols.nupkg 
1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets(262,5): error : The system cannot find the file specified 
2>------ Build started: Project: TSO.ProductItemList.Client, Configuration: Debug Any CPU ------ 
2> C:\Program Files\dotnet\dotnet.exe build "C:\projects\tsl\ProductItemList\src\TSO.ProductItemList.Client" --configuration Debug --no-dependencies 
2> Project TSO.ProductItemList.Client (.NETStandard,Version=v1.6) will be compiled because project is not safe for incremental compilation. Use --build-profile flag for more information. 
2> Compiling TSO.ProductItemList.Client for .NETStandard,Version=v1.6 
2> Producing nuget package "TSO.ProductItemList.Client.1.0.1" for TSO.ProductItemList.Client 
2> TSO.ProductItemList.Client -> C:\projects\tsl\ProductItemList\src\TSO.ProductItemList.Client\bin\Debug\TSO.ProductItemList.Client.1.0.1.nupkg 
2> Producing nuget package "TSO.ProductItemList.Client.1.0.1.symbols" for TSO.ProductItemList.Client 
2> TSO.ProductItemList.Client -> C:\projects\tsl\ProductItemList\src\TSO.ProductItemList.Client\bin\Debug\TSO.ProductItemList.Client.1.0.1.symbols.nupkg 
2>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets(262,5): error : The system cannot find the file specified 
========== Build: 0 succeeded, 2 failed, 0 up-to-date, 0 skipped ========== 
+0

Дайте VS 2017 попробовать. Корпорация Майкрософт больше не поддерживает старую инструментальную технику. –

+0

@LexLi VS 2015 считается старым инструментом? Почему первый шаг инструкций по установке Microsoft для .NET Core: «Загрузить Visual Studio 2015»? https://www.microsoft.com/net/core#windowsvs2015 –

+0

просто потому, что он еще не 7 марта. Вероятно, они не хотят обновлять страницы дважды за такой короткий промежуток времени. –

ответ

10

Сообщение об ошибке полностью вводило в заблуждение, поэтому мой postcompile cmd опубликовал библиотеку как пакет nuget на моем собственном сервере nuget, который не срабатывал:

"scripts": 
    { 
    "postcompile": 
    [ 
     "dotnet pack --no-build --configuration %compile:Configuration%", 
     "\"C:\\Program Files (x86)\\NuGet\\nuget\" push \"%project:Directory%\\bin\\%compile:Configuration%\\%project:Name%.%project:Version%.nupkg\" -s http://foo/NugetServer/ -apikey testkey" 
    ] 
    } 

Это CMD пытается вызвать C:\Program Files (x86)\NuGet\nuget.exe

Как я уже сказал, я клонирую этот проект и не создал его, разработчик, который создал проект имеет C:\Program Files (x86)\NuGet\nuget.exe установлено.

У меня был только C:\Program Files (x86)\NuGet, no nuget.exe, папка существовала, потому что у меня установлено расширение nuget Visual Studio 2015, и там находится файл .vsix, но нет nuget.exe.

Я просто скачал nuget.exe here, последнее (v3.5.0) и нахожусь там, где мой postcompile CMD ожидал, что это будет: C: \ Program Files (x86) \ NuGet

+1

Рад видеть, что вы нашли причину, но рекомендуется перейти к последнему SDK как к предварительные сборки заканчиваются. –

+0

Великий намек, был причиной и в моем случае. Надеемся на лучший SDK с возвратом csproj в VS2017 – ZoolWay

0

Попробуйте это ...

  1. Закрыть Visual Studio
  2. Загрузить 1.1 SDK, https://www.microsoft.com/net/core#windowscmd
  3. Reopen проект в Visual Studio
  4. Удалить project.lock.json (ожидание восстановления)
  5. Rebuild
+0

Я уже у меня установлен .net core 1.1, я удалил .json.lock и ждал восстановления, а последующая сборка все еще не удалась. –

+0

попробуйте добавить раздел времени выполнения (ниже раздела фреймворка): –

+0

«runtimes»: { «win10-x64» : {} }, –