2016-10-03 8 views
2

У меня есть небольшое приложение командной строки, написанное на C# /. NET. Мне нужно, чтобы он запускался при установке .NET 3.5 или выше в операционной системе.Windows, предлагающая установить .NET 3.5 при установке 4.x

Чтобы сделать это, я имею app.config содержать следующее:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" /> 
    <supportedRuntime version="v2.0.50727" /> 
    </startup> 
</configuration> 

рамках проекта выставиться на».NET Framework 3.5" .

С моей точки зрения, эти две настройки должны быть совместимы с обратной связью, так что, если у кого-то не установлено 3.5, но установлено 4.x, оно будет продолжать работать.

Есть ли что-то еще, что мне не хватает? Из моих исследований я подумал, что я собрал все вместе, чтобы это работало.

Редактировать: В нижеуказанном вопросе здесь также указаны ссылки и использование утверждений. нет никаких компонентов сторонних

ниже приводятся ссылки в проекте:

System.Core 
System.Web.Extensions 
System.Windows.Forms 

и следующие мои используя операторы:

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Runtime.InteropServices; 
using System.Text; 
using System.Security.Cryptography; 
using System.Web.Script.Serialization; 
using System.Reflection; 
using System.Diagnostics; 
+0

Есть ли у компонентов сторонних? –

+0

i do not, я добавлю ссылки и используя заявления к исходному вопросу – Josh

+0

Попробуйте добавить 'sku', http://stackoverflow.com/questions/6739412/require-the-net-4-0-full-profile- with-supportedruntime –

ответ

1

Это известное ограничение .NET Framework - начиная с 4, приложение не может быть выполнено в пределах его собственной среды выполнения, если предыдущий (в вашем случае target) не установлен.

3.5 основан на другом CLR (2.0), поэтому некоторые проблемы с совместимостью. Вам нужно будет перенаправить ваш проект на 4.0 (или более поздней), чтобы избежать проблемы с запросом на установку рамки.

Рекомендуемая литература: CLR Inside Out - In-Process Side-by-Side