在FSharp.Core.dll(4.0.30319.1)中,我找到HasCustomAttribute了值为19的标记.在ECMA-335中未指定此值.ECMA-335(第II部分,24.2.6)仅描述0到18之间的值.
有人知道什么是有价值的意思吗?
更新:
好像tag(19)指定的那样GenericParamTable.
Core.EqualityConditionalOnAttributeClass
Collections.Map<'Key,'Value>Class
但第6版Reflector不显示FSharp.Core.Collections.FSharpMap类型的泛型参数的属性.
更新2:
问题已经结束.在第5版ECMA-335中回答.(我使用了第4版).
如何按本地时间配置IIS7高级日志记录翻转?
在选项中我设置了每日时间表(见图http://gyazo.com/05843b6e29d51f21ee7ed2d6aa4d5157).但IIS使用UTC时间创建新的日志文件,而不是本地时间.
我在解决方案中有 2 个测试项目。
第一个项目(“VDoc”)声明 VDocQuery 类型。
第二个项目 ("VDocQueryTest" ) 调用 VDocQuery 构造函数。
我得到 2 个 VDocQuery 的 ITypeSymbol(每个项目一个),比较它,但得到错误的结果。
步骤:
1. 获取第一个 ITypeSymbol(来自具有 SemanticModel.LookupNamespacesAndTypes() 方法的 VDoc 项目)。
2. 从 VDocQueryTest 项目中获取第二个 ITypeSymbol(来自 ObjectCreationExpressionSyntax.GetTypeInfo().Type)
3. 将它与 ITypeSymbol.Equals(ITypeSymbol) 进行比较。
我期望真正的结果,但得到错误的结果。
问题:如何在一个解决方案中正确比较来自不同项目的 ITypeSymbols?
代码示例:

class Program
{
static void Main(string[] args)
{
string solutionPath = @"..\..\..\StaticAnalysis.sln";
MSBuildWorkspace workspace = MSBuildWorkspace.Create();
Solution solution = workspace.OpenSolutionAsync(solutionPath).Result;
var vdocProject = FindProjectByName("VDoc", solution);
SemanticModel semanticModel = vdocProject.Documents.First().GetSemanticModelAsync().Result;
var nsVDocQueryFunctionalTest = (INamespaceOrTypeSymbol)semanticModel.LookupNamespacesAndTypes(0, null, "VDocQueryFunctionalTest").First();
var tVDocQuery = (ITypeSymbol)semanticModel.LookupNamespacesAndTypes(0, nsVDocQueryFunctionalTest, …Run Code Online (Sandbox Code Playgroud) 我试图从ObjectCreationExpressionSyntax对象获取类型信息但失败了.
下面是重现问题的示例(请参阅代码中的"ti.Type为null"):
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.MSBuild;
namespace RoslynExample
{
class Program
{
static void Main(string[] args)
{
string solutionPath = @"..\..\..\RoslynExample.sln";
MSBuildWorkspace workspace = MSBuildWorkspace.Create();
Solution solution = workspace.OpenSolutionAsync(solutionPath).Result;
foreach (var project in solution.Projects)
{
if (project.Name == "RoslynBugProject")
{
foreach (var document in project.Documents)
{
var compilationUnit = document.GetSyntaxRootAsync().Result;
var semanticModel = document.GetSemanticModelAsync().Result;
new MyWalker(semanticModel).Visit(compilationUnit);
}
}
}
}
}
partial class MyWalker : CSharpSyntaxWalker
{
private SemanticModel _semanticModel;
public MyWalker(SemanticModel semanticModel)
{
_semanticModel = …Run Code Online (Sandbox Code Playgroud)