Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить версию Framework в проекте, Возможно? 
V
    Опции темы
HarpyWar
Дата 25.6.2007, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 3.6.2007

Репутация: нет
Всего: нет



Есть программа, написанная в VS2005 с установленным FM 2.0. В системе есть ещё 2 более ранних версий FM.
Возможно ли в проекте изменить версию FM, например, на 1.0, и скомпилировать чтобы пользователь с этой версией смог запускать прогу?

Просто у большинства юзеров установлен только первый фреймворк, вместе с системой, а второй качать 20 мб не каждому хочется из инета, чтобы запустить маленькую прогу.
PM MAIL   Вверх
-ser-
Дата 25.6.2007, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



добавь XML элемент в конфиг файл.
либо <supportedRuntime>, либо <requiredRuntime> в зависимости от того что тебе нужно.
это почти одно и то же, просто первый элемент не поддерживает 1.0.
посмотри хелп студии на вышеупомянутые элементы, если будут вопросы

<configuration>
   <startup>
      <supportedRuntime version="v1.1.4322"/>
      <!--<requiredRuntime version="v1.0.3705" safemode="true"/-->
   </startup>
</configuration>



--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
HarpyWar
Дата 25.6.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 3.6.2007

Репутация: нет
Всего: нет



В директории с проектом создаю App.config с содержимым
Код

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
        <requiredRuntime version="v1.1.4322"/>
    </startup>
</configuration>


Но в папку /bin он не копируется после компиляции, и при запуске на компе с FM 1.1 все-равно требует версию 2.0...
Или надо не так?

Это сообщение отредактировал(а) HarpyWar - 25.6.2007, 12:22
PM MAIL   Вверх
thomas
Дата 25.6.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



HarpyWar, 
У меня примерно такая же проблема.
Написал бизнес приложение для клиента на своей машине с FW 2.0 и FW 3.0 в VS 2005.
Так на его машине запустить не смог, пока не установил FW2.0. 
В этом плане у юзеров MS похоже проблемы. 
Все что написано в новых версиях VS не работаем без соответствующих библиотек на машинах пользователей.
А писать приложение в новой студии используя только старую версию FW я думаю не получиться.
Вот такие грабли.
И это многократно уже обсуждалось: типа как распространять приложение? --> ответ: ставить на машину пользователя соответствующий FW, либо заранее, либо при установке приложения.

Тут хоть застрелись  smile  иначе никак.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
stab
Дата 25.6.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



Цитата(HarpyWar @  25.6.2007,  07:12 Найти цитируемый пост)
Возможно ли в проекте изменить версию FM, например, на 1.0, и скомпилировать чтобы пользователь с этой версией смог запускать прогу?


если в проекте не используется ничего специфичного для fw 2.0 (что маловероятно), можно попробовать скомпилить его с помощью компилятора из более ранних версий. запусти билд проекта в студии (Ctrl+Shift+B или Shift+F6), в Output  выведится командная строка компилера:

Код

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /debug+ /debug:full /optimize- /out:obj\Debug\Project1.exe /target:exe Class1.cs


меняй все "v2.0.50727" на "v1.1.4322" и с командной строки компиль (Win+R, cmd). если повезёт, то всё ок будет. *держит пальцы крестиком*  smile 


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
tol05
Дата 25.6.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



не уверен, что это можно сделать стандартными (не хакерскими smile ) средствами. Если кто знает, распишите последовательность, лично мне пригодится smile
Нагуглил вот что:
MSBee
MSBuild Toolkit 


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
SilentNick
Дата 25.6.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 12.6.2007

Репутация: нет
Всего: нет



Цитата(HarpyWar @ 25.6.2007,  12:21)
В директории с проектом создаю App.config с содержимым
...
Но в папку /bin он не копируется после компиляции, и при запуске на компе с FM 1.1 все-равно требует версию 2.0...
Или надо не так?

Сделай Add New Item и выбери там Application Configuration File. (Либо создавай xml файл в папке где лежит программа - WindowsApplication.exe.config).

Правда вариант, предложенный -ser-'ом у меня не канает - вываливается ошибка Приложение создало исключение, которое не может быть обработано.
PM MAIL ICQ   Вверх
stab
Дата 25.6.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



Цитата(SilentNick @  25.6.2007,  22:18 Найти цитируемый пост)
вываливается ошибка Приложение создало исключение, которое не может быть обработано. 


оно и не удивительно, msil второй версии не совместим с первым фреймворком. компилировать надо именно компилером из первого фреймворка. файлы конфигрурации тут не помогут, они работают только при совместимости назад, но не добавляют совместимость вперёд.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
HarpyWar
Дата 26.6.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 3.6.2007

Репутация: нет
Всего: нет



Цитата(SilentNick @ 25.6.2007,  18:18)
Сделай Add New Item и выбери там Application Configuration File. (Либо создавай xml файл в папке где лежит программа - WindowsApplication.exe.config).

Правда вариант, предложенный -ser-'ом у меня не канает - вываливается ошибка Приложение создало исключение, которое не может быть обработано.

Добавил конфиг из VS, но всё-равно конечный файл не запускается...

Пробовал из командной строки с помощью компилятора FM 1.1 - выходят ошибки. 
PM MAIL   Вверх
stab
Дата 26.6.2007, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



Цитата(HarpyWar @  26.6.2007,  04:01 Найти цитируемый пост)
Пробовал из командной строки с помощью компилятора FM 1.1 - выходят ошибки.  


какие?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
SilentNick
Дата 26.6.2007, 06:35 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 12.6.2007

Репутация: нет
Всего: нет



Цитата(cully @ 25.6.2007,  18:35)
оно и не удивительно, msil второй версии не совместим с первым фреймворком.

Ну вообщем-то оно и понятно - глупо было предполагать, что с помощью одной строчки приложение, для работы которого необходим второй framework, будет прекрасно работать и с первым...

А вот с компиляцией под определенную версию HarpyWar'у придется помучиться, поскольку если изначально приложение писалось под второй framework, там используется много того, чего в первом просто-напросто нету.
Вот например простое консольное приложение:
Код

using System;
using System.Collections.Generic;
using System.Text;

namespace TestApp
{
    class Program
    {
        static void Main(string[] args)
        {            
            Console.Write("Версия .Net Framework: " + Environment.Version.ToString());
            Console.ReadKey();
        }
    }
}

Чтобы его скомпилить компилятором версии 1.1.4322 пришлось убрать ссылку на пространство имен System.Collections.Generic и вызов ReadKey(). Если проект достаточно крупный, но изменять придется довольно таки много (возможно даже придется отказаться от многих вещей, поскольку их нету в предыдущих версиях)
PM MAIL ICQ   Вверх
-ser-
Дата 26.6.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



понятное дело, что ранние рантаймы ведать не ведают о том что случилось после них.
и второе, если ты хочешь запускаться в первой версии, то и функциональность проги не должна превышать достижения первой.

то есть, ты должен компилировать прогу используя все референсы в проекте на ранние dll, которые находятся в C:\WINDOWS\Microsoft.NET\Framework\vX.x.xxxx\

а конфиг файл говорит, если стоит 2.0, то запустимся под 2.0 или под той которой прикажете, (ты можешь указать приоритеты) но не ранней чем было скомпилировано.

прочитай в хелпе студии - How to: Use an Application Configuration File to Target a .NET Framework Version 
(у меня локально следующая ссылка, возможно у каждого разная)
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxmigration/html/5247b307-89ca-417b-8dd0-e8f9bd2f4717.htm





--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
HarpyWar
Дата 26.6.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 3.6.2007

Репутация: нет
Всего: нет



С конфигурационным XML файлом такого содержания выходит только в C#, а на VB.NET не получается.
Если выставить <requiredRuntime version="v1.0.3705" safemode="true"/>, то с более поздним FM такая прога не запустится, будет требовать именно v1.0

Попробовал простую VB программу откомпилировать через компилятор FM 1.1, выводит ошибки по всему проекту (во вложенном файле).


Вообще, я так почитал, что вы пишете, и решил, что результат не стоит таких мучений, особенно редактирования кода для совместимости со старым FM. 
Ибо все-равно не у всех пользователей установлен даже FM 1.1, и качать новый все-равно придется.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  fm1.1.txt 13,08 Kb
PM MAIL   Вверх
-ser-
Дата 27.6.2007, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



да в конце-концов поставляй со своей прогой 2.0-й фреймворк. и не надо им будет качать его. в нете масса инфо как программно проверить какой фреймворк стоит на компе (если тебя нет рядом с клиентом). если ранняя версия, инсталлируй последний. все бесплатно и законно и проще чем гемор с конфигурацией. я сам повелся на вопрос как таковой.


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Sanguine
Дата 29.6.2007, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



Ничего, вот выйдет скоро официальный Orcas, в него сразу эту функцию встроили - под какой Framework разрабатываешь... Он и И функционал по версии обрубает, и вообще все замечательно... И будем компилить хоть под 1.0, 1.1, 2.0, 3.0, или 3,5 без гемору. Скорее бы уже. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0970 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.