У меня есть проект VS2017, который компилируется в DLL, который затем вызывается EXE, написанным кем-то другим. Оба проекта нацелены на .Net Framework 4.6.2. Я переписал один из моих DLL-методов, чтобы вернуть кортеж, а также импортировал связанный пакет NuGet. Когда я компилирую проект, он включает System.ValueTuple.dll в выходной каталог, который затем развертывается на других машинах, где моя DLL загружается и вызывается EXE. Но когда EXE пытается вызвать метод, возвращающий кортеж, он сбой:
Неожиданная ошибка Не удалось загрузить файл или сборку "System.ValueTuple, Version = 4.0.1.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51" или одну из его зависимостей. Система не может найти указанный файл.
Я не понимаю, почему он не находит файл, так как он находится в той же папке, что и моя DLL. По-видимому, MS не включила эту сборку в .Net Framework 4.6.2.
Обратите внимание, что моя DLL зарегистрирована в Windows, используя файл machine.config. Я предполагаю, что если я также добавлю System.ValueTuple.dll в этот файл, он будет работать (еще не пробовал и не уверен, что это лучший подход, особенно долгосрочный.) Есть ли лучший способ, помимо ожидания 4.6.3 и надеется, что он включает эту сборку?