Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VS 2008 Professional, Smart Device .NET C# project - slow build

I have VS 2008 Professional and a Smart Device .NET C# project. I have ~100 cs files in total. The build takes a very long time, I have to wait for linker approx. 1min (60s) every time I compile the project. I have Core i3, 4GB RAM, 7200rpm disk.

What causes this and how can I optimize the build? Any Visual Studio options?

like image 674
cubesoft Avatar asked Oct 14 '10 13:10

cubesoft


2 Answers

For windows 10 and framework 3.5,

in C:\Windows\Microsoft.NET\Framework\v3.5 folder, find Microsoft.CompactFramework.common.targets file.

In this section

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

change this, (add Condition="'$(DoPlatformVerificationTask)'=='true'" line)

<Target
    Name="PlatformVerificationTask">
    <PlatformVerificationTask
        Condition="'$(DoPlatformVerificationTask)'=='true'" <!-- Added -->
        PlatformFamilyName="$(PlatformFamilyName)"
        PlatformID="$(PlatformID)"
        SourceAssembly="@(IntermediateAssembly)"
        ReferencePath="@(ReferencePath)"
        TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
        PlatformVersion="$(TargetFrameworkVersion)"/>
</Target> 
like image 108
Tahir FEYZIOGLU Avatar answered Oct 05 '22 04:10

Tahir FEYZIOGLU


If you follow the advise from Hans Passant's comment and set MSBuild to diagnostic output it will give a clearer picture of just what is taking the time. If you find that your build is hanging on the Licensing Compiler (LC.exe) then this could be due to it trying to call a server and timing out. You can resolve this by altering your machine.config -

edit c:\windows\microsoft.net\framework\v2.0.50727\config\machine.config, and add the following key:

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

EDIT://

Based on the comment below I did a little digging. The platform verification task has a known issue where it runs very slowly in VS2008. More detail on it can be found here:

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

One way around this is to disable the task itself in your build. To do this

1) Open the file:

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

for editing.

2) Go to the line which reads:

Name="PlatformVerificationTask">

and change it to:

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

3) Add the SkipPlatformVerification environment variable to the system and set it to "true" (To re-enable Platform Verification set the environment variable to "false"). If you need help on setting up an environment variable read http://vlaurie.com/computers2/Articles/environment.htm. If you don't want to add an environment variable you can swap the condition for something that is always false (i.e. Condition="'true' == 'false'")

like image 30
Wolfwyrd Avatar answered Oct 05 '22 04:10

Wolfwyrd