2014-11-25 1 views
2

У меня есть короткий C# скрипт, который использует различные особенности языков и различные .NET библиотеки:Компиляция отдельного C# файла от старой платформы .NET

using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.IO; 
using System.IO.Compression; 
using System.Net; 
using System.Reflection; 
using System.Runtime.InteropServices; 
using System.Text.RegularExpressions; 
using System.Text; 
using System.Threading; 
using Microsoft.Win32.SafeHandles; 

Полный сценарий можно найти here.

я скомпилировать его с помощью этой команды:

%WINDIR%\Microsoft.NET\Framework\v3.5\csc.exe code.cs /debug /nologo 

Но оказывается, что .NET Framework v3.5 не доступны в некоторых дистрибутивах ОС Windows по умолчанию.

Что было бы лучшим способом скомпилировать этот код, чтобы он работал в Windows Vista, 7, 8, 8.1 и Server 2008 без необходимости загрузки и установки .NET framework?

Я попытался ищет

%WINDIR%\Microsoft.NET\Framework\v3.0\csc.exe 

двоичном, но она не существует на моей машине.

+0

Проблема заключается не в том, что вам нужно перейти к старой структуре, проблема в том, что новый материал работает только в более новой структуре. Таким образом, вам понадобится '% WINDIR% \ Microsoft.NET \ Framework \ v4.0.30319 \ csc.exe' –

+0

@ScottChamberlain, но .NET не поставляется, например, по умолчанию в Windows Vista? – imslavko

+0

В программах Add-Remove. Но это может быть или не быть включено, ваша программа ничего не может с этим сделать без setup.exe –

ответ

2

В вашем файле app.config необходимо указать supported runtimes, которого хотите, чтобы ваше приложение поддерживает. Поэтому, если вы хотите поддерживать 3.0 или новее, вам нужно будет иметь.

<configuration> 
    <startup> 
     <supportedRuntime version="v2.0.50727"/> 
     <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

Вам также нужно будет убедиться, что целевые показатели Вашего проекта только с .NET 3.0 в настройках проекта, как это версия, которая поставляется в комплекте с Windows Vista.

Если .NET отключен в программах добавления-удаления, вы ничего не можете сделать, вам нужно будет установить у пользователя какую-либо версию самостоятельно или установить ее как часть вашего развертывания (установщик установки или One- Нажмите).

+0

Где я могу создать файл app.config? И как я могу сделать исполняемый файл csc.exe? – imslavko

+0

вы помещаете файл app.config везде, где вам нужно, вы сообщаете об этом с помощью флага ['/appconfig'](http://msdn.microsoft.com/en-us/library/ee523958.aspx): 'Код csc.exe.cs/debug/nologo/appconfig: app.config' –

+0

Спасибо! Как кто-то, кто не очень хорошо работает с .NET, самому пользователю нелегко всю информацию. – imslavko

3

Насколько я знаю, компилятора для .NET 3 нет, так как это просто .NET 2 с некоторыми дополнительными сборками. Следовательно, нет необходимости в другом компиляторе, чем тот, который был tjere: компилятор .NET.

Итак, вы должны иметь возможность компилировать свой проект с использованием этого компилятора, который находится в WINDIR%\Microsoft.NET\Framework\v2.0.50727\csc.exe.

Это будет работать, пока ваш код не использует специальные функции .NET 4. Затем вам необходимо использовать этот компилятор и установить клиент .NET на каждую систему, не имеющую эту версию.

+0

Большое спасибо за ваш ответ. Я попробую это. Является ли .NET 2.0 общим знаменателем большинства версий Windows? – imslavko

+0

Компилятор .NET 2 способен компилировать код до 3.5. Если вы используете только ссылки, которые используют максимум 3.5, это не проблема. –