作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在做什么用一句话
查看分行 Update-1
来自 Roslyn github repository ,构建 csc.exe,并使用我自己构建的 csc.exe 版本编译随机解决方案。
预期结果
我希望性能与 VS 2015 Update 1 随附的原始 Roslyn 版本相当,位于路径:C:\Program Files (x86)\MSBuild\14.0\Bin
实际结果
与原始版本相比,我自己构建的 Roslyn 版本的构建性能要差得多。在我在测试中使用的解决方案中:大约 30 秒与 65 秒。
我的程序更详细
Release
构建 Roslyn配置(对解决方案平台尝试了 Mixed Configuration
和 x64
。)<CscToolPath>C:\Path\To\Output\Location\Of\Roslyn\Binaries\</CscToolPath>
MSBuild.exe /t:Rebuild /m:1 /verbosity:m MySolutionName.sln
MSBuild.exe /t:Clean /m:1 /verbosity:m MySolutionName.sln
<CscToolPath>C:\Program Files (x86)\MSBuild\14.0\Bin\</CscToolPath>
最佳答案
除了完全正确的 Kevin 的回答之外,这里还有一些关于签名/NGEN 编译 Roslyn 二进制文件的更多细节,因为这对其他人来说可能很有趣。
<Choose>
<When Condition="'$(SignAssembly)' == 'true'">
<Choose>
<!-- Shipping binaries in an "official" build are delay-signed with the MS key; later, the signing
system will finish the strong-name signing. -->
<When Condition="'$(NonShipping)' != 'true'">
<PropertyGroup>
<AssemblyOriginatorKeyFile>$(VSLToolsPath)\Strong Name Keys\35MSSharedLib1024.snk</AssemblyOriginatorKeyFile>
<DelaySign>true</DelaySign>
<PublicKey>0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9</PublicKey>
<PublicKeyToken>31BF3856AD364E35</PublicKeyToken>
</PropertyGroup>
</When>
<!-- Non-shipping binaries are simply signed with the Roslyn internal key. -->
<Otherwise>
<PropertyGroup>
<AssemblyOriginatorKeyFile>$(VSLToolsPath)\Strong Name Keys\RoslynInternalKey.Private.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<PublicKey>$(RoslynInternalKey)</PublicKey>
<PublicKeyToken>fc793a00266884fb</PublicKeyToken>
</PropertyGroup>
</Otherwise>
</Choose>
</When>
</Choose>
<Choose>
<When Condition="'$(SignAssembly)' == 'true'">
<PropertyGroup>
<AssemblyOriginatorKeyFile>C:\path\to\keyfile\TestKey.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<PublicKey>0024000004800000940000000602000000240000525341310004000001000100B15B00E697DB995031A740A3E07A0B1DBE16AAEA61E615A013E0381B4D875F97F1792965D58810893F6D4B1C10CBD991FB8E9F1118D9C0C6F0EBCB50462FC25056E194667CB59822C18E9CB0C17DBC573291F05F7C87B51C48B377C9EEE12F6D5B331B235E5D6E3669737B210F7BE245A76B118C23EAD90FC392E4ED9F6CDFAB/PublicKey>
<PublicKeyToken>6E0B9EF75D28854E</PublicKeyToken>
</PropertyGroup>
</When>
</Choose>
sn.exe
也可用于导出公钥以及提取公钥 token (例如,从您可以使用 key 测试签名的程序集中)ngen.exe install "C:\path\to\Roslyn\Release\csc.exe"
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe
)
关于.net - 自编译 Roslyn 构建性能 : Not as fast as originally shipped Roslyn version,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34853273/
我是一名优秀的程序员,十分优秀!