VS 2008 Professional, проект Smart Device .NET C # - медленная сборка - PullRequest
12 голосов
/ 14 октября 2010

У меня VS VS Professional и проект Smart Device .NET C #. У меня есть ~ 100 cs файлов. Сборка занимает очень много времени, приходится ждать компоновщика ок. 1 мин (60 с) каждый раз, когда я компилирую проект. У меня Core i3, 4 ГБ оперативной памяти, 7200 об / мин.

Что вызывает это и как я могу оптимизировать сборку? Какие-нибудь варианты Visual Studio?

Ответы [ 3 ]

20 голосов
/ 14 октября 2010

Если вы будете следовать совету из комментария Ханса Пассанта и установить MSBuild для диагностического вывода, это даст более четкое представление о том, что занимает время.Если вы обнаружите, что ваша сборка висит на лицензионном компиляторе (LC.exe), это может быть связано с тем, что она пытается вызвать сервер и истекло время ожидания.Чтобы решить эту проблему, измените файл machine.config -

, отредактируйте файл c: \ windows \ microsoft.net \ framework \ v2.0.50727 \ config \ machine.config и добавьте следующий ключ:

  <configuration>
    <runtime>
      <generatePublisherEvidence enabled="false"/>

РЕДАКТИРОВАТЬ: //

Основываясь на комментарии ниже, я немного покопался.У задачи проверки платформы есть известная проблема, которая выполняется очень медленно в VS2008.Подробнее об этом можно узнать здесь:

http://blogs.msdn.com/b/vsdteam/archive/2006/09/15/756400.aspx

Одним из способов решения этой проблемы является отключение самой задачи в вашей сборке.Для этого

1) Откройте файл:

%windir%\Microsoft.NET\Framework\v2.0.50727\Microsoft.CompactFramework.Common.Targets

для редактирования.

2) Перейдите к строке, которая гласит:

Name="PlatformVerificationTask">

и измените его на:

Name="PlatformVerificationTask" Condition="'$(SkipPlatformVerification)' != 'true'">

3) Добавьте переменную среды SkipPlatformVerification в систему и установите для нее значение «истина» (для повторного включения проверки платформы установите переменную среды на «ложь»).Если вам нужна помощь по настройке переменной среды, прочитайте http://vlaurie.com/computers2/Articles/environment.htm. Если вы не хотите добавлять переменную среды, вы можете поменять условие на что-то, что всегда ложно (т.е. Condition = "'true' == 'ложь ")

3 голосов
/ 05 июля 2012

Просто переопределите цель в вашем файле .csproj следующим образом. Тогда это будет работать на всей машине, или, конечно, вы можете скопировать весь блок кода с добавленной условной строкой. В любом случае вам не нужно изменять системный файл.

<Target Name="PlatformVerificationTask"></Target>
0 голосов
/ 13 июня 2019

Для Windows 10 и рамки 3,5 ,

в папке C: \ Windows \ Microsoft.NET \ Framework \ v3.5, найдите файл Microsoft.CompactFramework.common.targets.

В этом разделе

<Target
    Name="PlatformVerificationTask">
    <PlatformVerificationTask
        PlatformFamilyName="$(PlatformFamilyName)"
        PlatformID="$(PlatformID)"
        SourceAssembly="@(IntermediateAssembly)"
        ReferencePath="@(ReferencePath)"
        TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
        PlatformVersion="$(TargetFrameworkVersion)"/>
</Target>

изменить это, (добавить строку Condition = "'$ (DoPlatformVerificationTask)' == 'true'")

<Target
    Name="PlatformVerificationTask">
    <PlatformVerificationTask
        Condition="'$(DoPlatformVerificationTask)'=='true'" <!-- Added -->
        PlatformFamilyName="$(PlatformFamilyName)"
        PlatformID="$(PlatformID)"
        SourceAssembly="@(IntermediateAssembly)"
        ReferencePath="@(ReferencePath)"
        TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
        PlatformVersion="$(TargetFrameworkVersion)"/>
</Target> 
...