Я попытался использовать библиотеку Unmanaged Exports (.NET DllExport) в надежде что с ее помощью получится использовать свою DLL без .net framework.
Пример:
[return: MarshalAs(UnmanagedType.LPWStr)]
[DllExport("Test", CallingConvention = CallingConvention.Cdecl)]
public static string Test(
[MarshalAs(UnmanagedType.LPWStr)] string firstName,
[MarshalAs(UnmanagedType.LPWStr)] string lastName)
{
return string.Format("Hello {0} {1}", firstName, lastName);
}
Подключил свою DLL к программе на Delphi, но при вызове метода вышла ошибка что отсутствует .net framework
Насколько я понял моя DLL должна стать (unmanaged code) и работать без .net framework. Я прав, или я не до конца понимаю суть?
Код написанный на C# компилируются в промежуточный код IL для виртуальной машины .NET и может быть выполнен только ей. Поэтому когда вы запускаете свое приложение на другой машине, то она никаким образом не может выполнится без .NET фреймворка.
Если я правильно понял, библиотека Unmanaged Exports (.NET DllExport) выполняет всего лишь добавление имен для экспорта, но на сам код IL она не влияет. Поэтому ее использование никак не поможет запустить ее на машине без фреймворка.
Что бы данный подход сработал, надо заставить компилятор перевести IL код для виртуальной машины в нативный код для процессора. Мне не встречалась подобная функциональность, но на EnSO пишут про .NET Native который умеет это делать и включен в VS2015.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости