Используя Visual Studio 2017, было создано 2 решения: 100 ???
Решение 1 (.sln) (содержит 2 проекта)
- Консольный проект (.NET Core 2.1.0)
//Runs perfectly on Linux and Windows
- Проект библиотеки классов (.NET Core 2.1.0 и .NET Framework 4.7.2)
//Uses RuntimeInformation.IsOSPlatform(OSPlatform.Windows) and are Referenced by Console and MS Test Projects
Решение 2 (.sln) (содержит 1 проект)
На проект библиотеки классов решения 1 ссылается его сборка * .dll
MS Test Project (.NET Core 2.1.0) //Compiled/Published successfully; but when IsOSPlatform method of Class Library is called by this project, it throws an exception?:
Не удалось загрузить тип 'System.Runtime.InteropServices.OSPlatform' из сборки 'mscorlib, версия= 4.0.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089 '.
Выполнение теста
- После публикации теста в команде cli
dotnet vstest mstestproject.dll
было выполнено - Тестовый проект был запущен в Visual Studio IDE> Test Explorer
Пробовал, но не получилось:
- Добавлен пакет Nuget System.Runtime.InteropServices.RuntimeInformation в обоих проектах 10
- Поиск по всем проблемам GitHub, StackOverflow, MSDN - Не повезло ?
- Изменены целевые фреймворки / удалено .NET Framework 4.7.2 из библиотеки классов ?
Код из проекта библиотеки классов (решение 1.sln)
private const string CONFIG_DIR = @"Configuration";
private const string LOGFILES_DIR = @"Log Files";
public static string _ConfigDir;
public static string _LogFilesDir;
static CommonAppData()
{
var platform = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? PlatformType.Windows : RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? PlatformType.Linux : PlatformType.Unsupported;
var platformInfo = PlatformFactory.GetPlatform(platform);
_ConfigDir = Path.Combine(platformInfo.ApplicationDataDirectory, CONFIG_DIR);
_LogFilesDir = Path.Combine(platformInfo.ApplicationDataDirectory, LOGFILES_DIR);
}
Код для доступа к данным по проекту MSTestиз проекта библиотеки классов (решение 2.sln) , на который ссылается Assembly (.dll)
var ConfigurationPath = CommonAppData._ConfigDir; //Exception occurred here
[Из метаданных]
#region Assembly System.Runtime.InteropServices.RuntimeInformation, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.1.0\ref\netcoreapp2.1\System.Runtime.InteropServices.RuntimeInformation.dll
#endregion
Путь, представленный в метаданных, действителен на локальном компьютере??
Работает без каких-либо исключений:
Добавлен новый проект в качестве ссылки на проект библиотеки классов;Затем изменил ссылку сборки на ссылку проекта (Solution 2 MS Test -> Solution 1 Class Library)
?
Хотя ссылка проекта работала, но разрешена только ссылка сборки reference
Пожалуйста, предложите лучший подход / решение
Спасибо! ?