Ваш код уже делает то, что вы хотите - если не определен символ «NET1.1», он будет использовать второй фрагмент кода.
И да, вы должны скомпилировать отдельно для 1.1 и 2.0 дляэто сработает, потому что у вас будут другие результаты - у одного будет только первая перегрузка;одна из них будет иметь только вторую перегрузку.
Вы, вероятно, могли бы запустить код 1.1 в версии 2.0 и выше - это нормальный случай - но, поскольку у вас не может быть одной сборки, котораясодержит обе версии метода , а совместим с 1.1, вы также можете использовать две сборки.
Один из вариантов заключается в том, чтобы оба метода появлялись в сборке .NET 2+, чтобысохранить обратную совместимость для приложений, изначально созданных для сборки 1.1, для которых требуется выполнить миграцию:
public void LoadKeys(X509Certificate cert)
{
....
}
#if !NET1.1
public void LoadKeys(X509Certificate2 cert)
{
....
}
#endif
РЕДАКТИРОВАТЬ: просто уточнить некоторые моменты из обсуждения с Артуром в комментариях:
- Общее заявление Артура о том, что вы не можете использовать .NET 1.1 в приложении .NET 4, определенно неверно.Я только что сделал это со сборкой .NET 1.1 NUnit (которая была самой простой библиотекой .NET 1.1, которую мне приходилось сдавать)
- Если вы полагаетесь на безопасность доступа к коду, тогда у есть были изменения там между версиями фреймворка;вам нужно взглянуть на детали того, что вы делаете, чтобы понять, значительны ли различия
- Вы не можете собрать сборку .NET 2 и запустить ее в .NET1.1 из-за изменения двоичного формата - работает только наоборот.
- Хотя возможно , что вы полагаетесь на вызов в .NET 1.1, который был удален из более поздней версии.версия .NET, это довольно редкий случай, и его должно быть достаточно легко определить.В общем, Microsoft старается поддерживать обратную совместимость довольно хорошо.
Возможно, вы также захотите прочитать .NET 4 Руководство по миграции .
Наконец, я бы хотелотметьте, что .NET 1.1 сейчас действительно старый - если вы знаете, что вам нужно его поддерживать, то это вполне справедливо, но лично я постараюсь заставить клиентов обновиться, если это вообще возможно:)