Одним путем я сделал это однажды, должен был добавить метод расширения в том же пространстве имен как перечисление, которое возвратило строку. В моем случае это было просто hardcoded, но не будет никакой проблемой, получая их от файла ресурсов.
public static string Describe(this SomeEnum e)
{
switch(e)
{
SomeEnum.A:
return "Some text from resourcefile";
SomeEnum.B:
return "Some other text from resourcefile";
...:
return ...;
}
}
, Возможно, не чрезвычайно гладкое или необычное решение, но это работает =)
Он (вероятно) не выйдет из строя, пока не попытается использовать dll, для которой требуется 3.5. Если выполняющееся приложение может проверить версию перед использованием каких-либо определенных dll 3.5, вы можете отобразить диалоговое окно winform, и все должно быть в порядке. Самым безопасным вариантом было бы сделать исполняемый файл сборкой 2.0 и сделать все ваши файлы 3.5 в отдельной dll, скомпилированной для версии 3.5. Вы можете проверить библиотеку 2.0 перед загрузкой любой из ваших сборок 3.5.
Рассматривали ли вы возможность развертывания ClickOnce? Агент проверит и установит все необходимые компоненты, которые вы укажете, включая .Net. Это также делает безболезненным продвижение обновлений вашего приложения.
.NET 3.5 использует среду выполнения .NET 2.0, поэтому приложение будет запускаться отлично (однако оно завершится ошибкой, когда оно попытается загрузить сборки 3.5). Вы можете проверить Environment.Version , чтобы узнать, работает ли вы на .NET 3.5, и представить пользователю стандартный MessageBox.Show
, если нет.