VS 2008 Professional,智能设备.NET C#项目 - 慢速构建

时间:2010-10-14 13:40:04

标签: c# .net visual-studio windows-mobile compilation

我有VS 2008 Professional和智能设备.NET C#项目。我总共有~100个cs文件。构建需要很长时间,我必须等待链接器约。每次编译项目时都需要1分钟(60秒)。我有Core i3,4GB RAM,7200rpm磁盘。

是什么导致这种情况以及如何优化构建?任何Visual Studio选项?

3 个答案:

答案 0 :(得分:20)

如果您遵循Hans Passant的评论建议并将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环境变量添加到系统并将其设置为“true”(要重新启用Platform Verification,请将环境变量设置为“false”)。如果您在设置环境变量时需要帮助,请阅读http://vlaurie.com/computers2/Articles/environment.htm。如果您不想添加环境变量,可以将条件交换为始终为false的内容(即Condition =“'true'=='false'”)

答案 1 :(得分:3)

只需在此.csproj文件中重新定义目标即可。然后它将在整个机器上运行,或者当然你可以复制添加了条件行的整个代码块。 无论哪种方式,您都不需要修改系统文件。

<Target Name="PlatformVerificationTask"></Target>

答案 2 :(得分:0)

对于Windows 10和Framework 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>