VS 2008 Professional、Smart Device .NET C# 项目 - 缓慢构建
Posted
技术标签:
【中文标题】VS 2008 Professional、Smart Device .NET C# 项目 - 缓慢构建【英文标题】:VS 2008 Professional, Smart Device .NET C# project - slow build 【发布时间】:2011-04-25 10:15:28 【问题描述】:我有 VS 2008 Professional 和一个 Smart Device .NET C# 项目。我总共有大约 100 个 cs 文件。构建需要很长时间,我必须等待链接器大约。每次编译项目需要 1 分钟(60 秒)。我有 Core i3、4GB RAM、7200rpm 磁盘。
是什么原因造成的,我该如何优化构建?任何 Visual Studio 选项?
【问题讨论】:
C# 不使用链接器。将 MSBuild 输出更改为诊断并将您看到的时间粘贴到您的问题中。工具 + 选项、项目和解决方案、构建和运行。 【参考方案1】:如果您遵循 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”(要重新启用平台验证,请将环境变量设置为“false”)。如果您在设置环境变量方面需要帮助,请阅读 http://vlaurie.com/computers2/Articles/environment.htm。如果您不想添加环境变量,则可以将条件交换为始终为假的内容(即 Condition="'true' == 'false'")
【讨论】:
我检查了诊断级别。在我的例子中,PlatformVerificationTask 需要 290174 毫秒。是什么原因? 我在 3.5 文件夹中找到了 Microsoft.CompactFramework.Common.Targets 文件,而不是 2.0 %windir%\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.Common.targets 如果您将只需像这样在 .csproj 文件中重新定义一个目标。然后它将在机器上运行,或者当然您可以复制整个代码块并添加条件行。 无论哪种方式,您都不需要修改系统文件。
<Target Name="PlatformVerificationTask"></Target>
【讨论】:
这是一个很好的答案。 Microsoft.CompactFramework.Common.Targets 上的编辑将被 Windows 更新覆盖。这将适用于机器。【参考方案3】:对于 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>
【讨论】:
以上是关于VS 2008 Professional、Smart Device .NET C# 项目 - 缓慢构建的主要内容,如果未能解决你的问题,请参考以下文章
我可以将Visual Studio Professional与Team Foundation Server 2008一起使用吗?