Цель .Net 4.0 при использовании Windows 8 / VS2012

У меня возникли проблемы с созданием объединенной DLL для целевой .net4.0 на компьютере с Windows 8. Я могу успешно создавать отдельные библиотеки .net4.0 в VS2012, поэтому у меня нет этой проблемы:

Нацеливание на .NET 4.0 в VS 2012 в Windows 8

Я наткнулся на следующий отличный пост в блоге, в котором обсуждается моя проблема:

http://www.mattwrock.com/post/2012/02/29/What-you-should-know-about-running-ILMerge-on-Net-45-Beta-assemblies-targeting-Net-40.aspx

а также:

Не удалось загрузить тип 'System.Runtime.CompilerServices.ExtensionAttribute ' из сборки 'mscorlib

что предполагает использование следующего синтаксиса во время слияния:

/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"

К сожалению, в Windows 8 у меня нет этого каталога. Я могу придумать следующие возможные решения, но было бы интересно узнать, решил ли кто-нибудь это уже.

  1. Скопируйте сборки .net 4.0 с компьютера с Windows 7 в указанный выше каталог вручную.
  2. Найдите сборки .net 4.0, используемые VS2012, и укажите ссылки на них.
  3. ??

person MarcF    schedule 18.05.2013    source источник
comment
Это, безусловно, потому, что вы просто никогда не устанавливали .NET 4.0 на эту машину. Машина с Windows 8 с VS2012 имеет только .NET 4.5. Поэтому вам следует создавать только проекты, предназначенные для версии 4.5. Что автоматически решает и эту проблему.   -  person Hans Passant    schedule 18.05.2013
comment
@HansPassant - Вы делаете хорошее замечание, но мне все еще нужно создавать сборки для систем .net2.0+. Это не проблема для .net2.0 и .net3.5, поскольку они доступны в Windows 8, проблема была с .net4.0.   -  person MarcF    schedule 18.05.2013


Ответы (2)


Я также использую Windows 8 и VS 2012, но не сталкивался с этой проблемой (и, конечно же, куча других людей тоже в порядке). Очень просто, может быть, у вас установлена ​​версия 3.5 или 4.5, а это значит, что вам нужно установить фреймворк версии 4.0 (... опять же, если вы уже пробовали).

Я также обнаружил, что путь к папке, который вы указали, никуда не привел меня на моем ПК, но этот путь привел;

C:\Program Files\Reference Assemblies\Microsoft\Framework\

Можете ли вы попробовать этот путь на своем ПК и посмотреть, есть ли там папка v4.0.

person Kaushal De Silva    schedule 18.05.2013
comment
У меня есть каталог C:\Program Files\Reference Assemblies\Microsoft\Framework\, но там есть только v3.0, v3.5. - person MarcF; 18.05.2013
comment
Можешь попробовать @C:\Program Files\Reference Assemblies\Microsoft\VSTO40\v4.0.Framework? - person Ketan Modi; 18.05.2013
comment
@Ronak - этот каталог существует, но содержит только сборки Microsoft.Office... и Microsoft.VisualStudio.... - person MarcF; 18.05.2013
comment
Звучит довольно случайно, кажется, я читал в одной из ваших ссылок, что установка VS2010 решила проблему для кого-то, может быть, просто установите версию Express, чтобы посмотреть, поместит ли она нужные библиотеки DLL в нужные места? - person Kaushal De Silva; 18.05.2013
comment
@KaushalDeSilva - Извините, я должен был упомянуть, что у меня уже установлены и VS2010, и VS2012. Может попробую переустановить. - person MarcF; 18.05.2013
comment
@KaushalDeSilva - Большое спасибо за отзыв, но мне удалось заставить его работать, используя решение 1 выше, ответ опубликован. - person MarcF; 18.05.2013

Большое спасибо за комментарии и отзывы. Рабочее (хакерское) решение заключалось в следующем:

  1. Создайте новый каталог в Windows 8, C:\Program Files\Reference Assemblies\Microsoft\Framework\v4.0.
  2. Перейдите на компьютер с Windows 7, на котором не установлен .net4.5, и скопируйте содержимое папки C:\Windows\Microsoft.NET\Framework\v4.0.30319
  3. Вставьте файлы с шага 2 в папку, созданную на шаге 1.

Затем я смог правильно сослаться на сборки .net4.0 в Windows 8, используя следующее:

/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\v4.0"

Проверено, работает нормально.

person MarcF    schedule 18.05.2013
comment
Другой вариант — установить вместе с ним VS2k10. - person user7116; 18.05.2013
comment
@sixlettervariables - у меня с самого начала был установлен VS2010, это не помогло. - person MarcF; 18.05.2013
comment
Он добавил это для меня, у вас должен быть странный конфиг. Вы используете версии Express? - person user7116; 18.05.2013
comment
@sixlettervariables - Да, что-то кажется странным для моей установки, понятия не имею, что. У меня есть ульта для обоих. - person MarcF; 18.05.2013