2016-08-29 8 views
0

Я создаю решение с двумя проектами. Библиотека классов и консольное приложение должны иметь проект XUnit. Оба приложения нацелены на базовые структуры .net 451 и .net.символы не загружены визуальной студией 2015 в .net core library multi target project

Для библиотеки у меня есть "netstandard1.3" "net451"

Для проекта XUnit у меня есть "netcoreapp1.0" "net451"

У меня возникают проблемы при отладке модуль тестирует внутри Visual Studio 2015, используя тестовый проводник, когда я пытаюсь отлаживать, символы не загружаются.

Есть ли какие-либо настройки для проектов, которые мне не хватает? Любое ограничение в Visual Studio 2015?

У меня был этот проект и тесты работали нормально, только для основной версии .net. Проблема началась после введения цели net451. Все строит правильно, и тесты также обнаружены правильно.

Заранее благодарен!

project.json из библиотеки проекта

"version": "1.0.4", 
"files": { 
    "includeFiles": [ 
    "Content/ReleaseNotes.txt" 
    ], 
    "include": [ 
    "../../README" 
    ] 
}, 
"releaseNotes": "Review ReleaseNotes.txt for details.", 
    "requireLicenseAcceptance": true 
    }, 
"buildOptions": {  
    }, 
    "frameworks": { 
    "net451": { 
     "frameworkAssemblies": { 
     "System.ComponentModel.DataAnnotations": "", 
     "System.Data": "", 
     "System.Drawing": "", 
     "System.Drawing.Design": "", 
     "System.Transactions": "", 
     "System.Configuration": "", 
     "System.Configuration.Install": "", 
     "System.Management": "", 
     "System.Xml": "", 
     "System.Runtime": { 
      "type": "build" 
     } 
     }, 
     "dependencies": { 
     "Google.Protobuf": "3.0.0-beta4" 
     } 
    }, 
    "netstandard1.3": {  
     "buildOptions": { 
     "define": [ "NETCORE10" ], 
     "warningsAsErrors": false,    
     "embed": [ 
      "keywords.txt", 
      "Resources.resx"   
     ], 
     "resource": [ "**/*.resx" ], 
     "compile": { 
      "exclude": [ 
      "Framework/Net451/**/*.*",   
      ], 
      "includeFiles": [ 
      "Resources.Designer.cs"    
      ], 
      "excludeFiles": [ 
      "Properties/VersionInfo.cs",    
      ] 
     } 
     }, 
     "dependencies": { 
     "Microsoft.Extensions.Configuration.Json": "1.0.0", 
     "NETStandard.Library": "1.6.0", 
     "System.Collections.NonGeneric": "4.0.1", 
     "System.ComponentModel": "4.0.1", 
     "System.ComponentModel.Annotations": "4.1.0", 
     "System.ComponentModel.Primitives": "4.1.0", 
     "System.ComponentModel.TypeConverter": "4.1.0", 
     "System.Data.Common": "4.1.0", 
     "System.Data.SqlClient": "4.1.0", 
     "System.Diagnostics.Process": "4.1.0", 
     "System.Diagnostics.TextWriterTraceListener": "4.0.0", 
     "System.IO.Compression": "4.1.0", 
     "System.IO.FileSystem.Primitives": "4.0.1", 
     "System.IO.MemoryMappedFiles": "4.0.0", 
     "System.IO.Pipes": "4.0.0", 
     "System.Linq.Expressions": "4.1.0", 
     "System.Net.NameResolution": "4.0.0", 
     "System.Net.Security": "4.0.0", 
     "System.Net.Sockets": "4.1.0", 
     "System.Reflection": "4.1.0", 
     "System.Reflection.TypeExtensions": "4.1.0", 
     "System.Security.Principal.Windows": "4.0.0", 
     "System.Text.Encoding.CodePages": "4.0.1", 
     "System.Threading.Timer": "4.0.1", 
     "System.Threading.ThreadPool": "4.0.10", 
     "Google.Protobuf": "3.0.0-beta4" 
     } 
    } 
    } 
} 

project.json из XUnit проекта

{ 
    "version": "7.0.4", 
    "description": "MyLibrary", 
    "packOptions": { 
    "requireLicenseAcceptance": true 
    }, 
    "buildOptions": { 
    }, 
    "testRunner": "xunit", 
    "dependencies": { 
    "dotnet-test-xunit": "2.2.0-*", 
    "xunit": "2.2.0-*", 
    "MyLibrary": { 
     "target": "project" 
    } 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dnxcore50" 
     ], 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "version": "1.0.0-*", 
      "type": "platform" 
     } 
     }, 
     "buildOptions": { 
     "define": [ "NETCORE10" ], 
     "copyToOutput": [ "appsettings.json" ], 
     "compile": { 
      "include": [ "../*.cs" ], 
      "exclude": [ 
      "**/._*", 
      "Framework/Net451/**/*.*" 
      ], 
      "excludeFiles": [   
      "TestDataTable.cs" 
      ] 
     }, 
     "warningsAsErrors": false, 
     "optimize": true  
     } 
    }, 
    "net451": { 
     "frameworkAssemblies": { 
     "System.Collections": { 
      "type": "build" 
     }, 
     "System.Diagnostics.Debug": { 
      "type": "build" 
     }, 
     "System.Linq": { 
      "type": "build" 
     }, 
     "System.Reflection": { 
      "type": "build" 
     }, 
     "System.Reflection.Extensions": { 
      "type": "build" 
     }, 
     "System.Runtime": { 
      "type": "build" 
     }, 
     "System.Runtime.Extensions": { 
      "type": "build" 
     }, 
     "System.Threading.Tasks": { 
      "type": "build" 
     } 
     }, 
     "buildOptions": { 
     "compile": { 
      "exclude": [ 
      "Framework/NetCore10/*.*" 
      ], 
      "excludeFiles": [ 
      "Framework/Net451/PerfMonTests.cs", 
      "Framework/Net451/ReplicationTests.cs" 
      ] 
     } 
     } 
    } 
    } 
} 

ответ

0

Ну, надеюсь, что это сэкономить время на кого-то другого. Я как бы новичок в проектах xproj, а также все узнаю обо всех вариантах в новом файле project.json. Мне нравится пока. Это ответ на этот вопрос.

У меня был optimize = true вне рамки раздела, который применяется ко всем конфигурациям проекта. Таким образом, IDE никогда не генерирует отладочный код. Хорошей практикой для этого является создание раздела конфигурации в файле project.json, где вы определяете, как вы хотите, чтобы сборка вела себя для каждого случая. И вот раздел конфигурации, который я добавил.

"configurations": { 
"Debug": { 
    "buildOptions": { 
    "define": [ "DEBUG" ], 
    "optimize": false, 
    "preserveCompilationContext": true 
    } 
}, 
"Release": { 
    "buildOptions": { 
    "define": [ "RELEASE" ], 
    "optimize": true, 
    "preserveCompilationContext": true, 
    "xmlDoc": true 
    } 
} 

И все.