2017-01-05 8 views
0

У меня была проблема с моей Windows 7 после обновления, ни безопасный режим, ни режим восстановления не смогли решить проблему. Я был вынужден полностью переустановить Windows. Для разработки моих проектов мне нужна Visual Studio 2010.VS2010 Исключение сборки, вызванное ReSharper; Задача SetEnvironmentVariable не найдена

У меня всегда был установлен ReSharper и он привык к его функциям, поэтому я также установил его.

Все настройки я пытался строить свое решение, но столкнулся с проблемой ... img1 (Подчеркнутая файл можно найти здесь: https://up.zone/aj)

После нескольких часов, пытаясь решить проблемы, я figgured, что ReSharper была проблема. Я могу построить решение отлично, без установки ReSharper. Если он установлен, даже если все функции отключены и службы приостановлены, это приводит к тому, что эти ошибки на изображении выше отображаются в сборке.

мне удалось решить две из трех ошибок, следуя инструкциям этого пользователя Reddit на своем посту: https://up.zone/ag

Теперь я остался еще с одним исключением, я не могу figgure, как решить. Я не мог найти ничего полезного в поисковых системах, что означает, что вы, ребята, моя последняя надежда. Я действительно не хочу возвращаться к разработке без ReSharper.

Это одна: img2

Любая идея?

Спасибо!


Update 1

Я figgured, что проблема должна быть в NuGet.targets файл, расположенный в папке .nuget в нашем решении.

Мне удалось найти обходное решение по предложению this post, теперь я могу построить решение без каких-либо ошибок.

Резюмируя, удалите эту строку из вашего * .csproj файл

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

Хотя это работает, я не думаю, что это может быть решением. По этой причине я предполагаю, что эта строка существует. Кто-нибудь с глубоким пониманием NuGet, который может знать, как правильно решить эту проблему?


Update 2

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

Я сейчас в точке, где я знаю, где проблема, но не почему она вызвана.

Изменяет ли ReSharper что-либо в том, как ведет себя NuGet? Насколько я могу судить, ничто не добавляется и не удаляется в файл NuGet.targets или из него из-за ReSharper.

+0

Для чего это стоит: я думаю, что TaskEnvironmentVariable, на который ссылается Task, является та, которая обычно объявляется анализом кода (roslyn). Его нет в скомпилированной DLL, но непосредственно в файле .targets. На моем ПК он присутствует в C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.Targets и C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12 .0 \ CodeAnalysis \ Microsoft.CodeAnalysis.Targets. –

+0

@SimonMourier, так как у меня нет установленного VS 14, в папке 'C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \' нет папки с именем 'CodeAnalysis', однако есть одна в 'C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0'. Независимо от этого, исключение означает, что 'задача не может быть найдена', поэтому я предполагаю, что в этом файле что-то отсутствует. Не возражаете ли вы предоставить свой файл для сравнения? –

+0

У меня есть еще одна машина с v10.0, а файл Micr osoft.CodeAnalysis.T argets там не определяет SetEnvironmentVariable. Я думаю, это корень проблемы. Некоторый код на вашем компьютере требует более поздней версии этого. Я предлагаю вам установить msbuild 2013 (v12): https://www.microsoft.com/en-us/download/details.aspx?id=40760 и/или msbuild 2015 (v14), поскольку msbuild не поставляется исключительно с помощью VS сегодня, но является независимым инструментом/redist (на самом деле это даже открытый исходный код). –

ответ

1

Был еще один отчет по этой теме, по адресу https://youtrack.jetbrains.com/issue/RSRP-462271.

До сих пор до сих пор известно, что это вызвано двумя вещами, происходящими сразу: (a) использование задач MSBuild в исходной кодовой форме C# внутри файлов MSBuild XML, а не библиотек DLL, и (b) наличие некоторых DLL-файлов с открытым исходным кодом MSBuild поставляется с последней версией ReSharper для собственных нужд обработки файлов проекта.

Исходный код скомпилирован в DLL задачи во время запуска MSBuild (не так уж много общего, Roslyn сделал бы это, а не отправлял бы DLL? Серьезно?). При создании из Visual Studio (а не с помощью msbuild.exe) используется исполняемый экземпляр MSBuild, который будет работать в том же приложении, что и ReSharper, поэтому он использует общую разрешающую ссылку для сборки. Если он не слишком точен, он может случайно выбрать неправильную версию DLL по сокращенному имени, что нарушит компиляцию задачи (это отдельная ошибка, возможно, кэширована), а затем приведет к ошибке, не найденной в процессе выполнения во время выполнения (SetEnvironmentVariable task not found в этом случае).

Я тестировал образцы решений с исходными кодами и не мог их сломать. Так что тривиальные случаи в порядке. Никогда не слышал от первоначального репортера вопроса, поэтому дальнейших успехов не было.

Теперь у меня есть намек на то, что это Visual Studio 10 (любые другие версии VS, установленные на этой машине?) И maaaaybe - это задачи Roslyn. Мы можем точно знать, будет ли вы запускать MSBuild с более подробными журналами (задав параметры ведения журнала в разделе «Инструменты | Параметры | Проекты и решения | Сборка и запуск | MSBuild», построение вывода, по крайней мере, подробное) и построение только неисправного проекта.

Я также попробую это с VS10 и обновить этот ответ новыми данными.

+0

У меня установлен только VS2010 (следующие компоненты https://up.zone/av), а также компоненты VS2008 C++, потому что у нас есть несколько старых проектов которые нуждаются в этом конкретном компиляторе, предоставленном в этой версии. Мы не можем использовать более новую версию, потому что мы используем определенную функцию отчета, которая была удалена в более новых версиях, поэтому в основном я застрял с VS2010, пока мы не обновим зависимости. –

+0

также, я не смог повторить ошибку во вновь созданном решении. это просто происходит с 2 из 102 проектов в нашем решении. Я не вижу, что в этих проектах отличается, они кажутся совершенно прекрасными: s –

+0

Как насчет подробных журналов MSBuild? Они должны раскрыть разницу, я так надеюсь. – hypersw