Ste*_*ven 13 c# c#-6.0 visual-studio-2015
我刚刚安装了新版本的Visual Studio 2015社区版(RTM),我试图让我的开源项目在VS2015和C#6.0下运行.
我的一些.cs在项目中共享.这样我就可以构建PCL版本(功能有限)和核心库的"完整"版本.
但是出于某种原因,某些代码文件在整个项目中正确构建,但在PCL项目中构建时会失败(其中所有内容都在C#5和Visual Studio 2013下编译).cref在构建PCL版本时,编译器似乎无法解析XML注释.这是一个在我的机器上失败的简化代码示例:
/// <summary></summary>
public class A
{
// Compile error on next line:
/// <summary><see cref="Y(Type)"/>.</summary>
public void X() { }
/// <summary></summary>
/// <param name="x"></param>
public void Y(Type x) { }
/// <summary></summary>
/// <param name="i"></param>
public void Y(int i) { }
}
Run Code Online (Sandbox Code Playgroud)
我得到的编译错误是:
CS1580参数的类型无效XML注释cref属性中的类型:'Y(Type)'SimpleInjector.PCL
奇怪的是,XML评论中的IntelliSense支持(哇!我们现在在XML评论中有智能感知!)实际上是可行的,并且该方法Y(Type)可以通过下拉列表进行选择.但选择此选项后,将生成编译错误(仅在PCL中).
我的问题当然是如何解决这个问题?这是个常见的问题吗?项目的配置可能与此有关吗?这是一个已知的错误?
C#/ VB语言团队的开发人员David Kean在Twitter上做出了相当快的反应并对此做了一些研究.他向我报告说,这实际上是罗斯林的一个错误和已知限制.经过调查,他在这里和这里报告了Github上的问题.
这里基本上有两个问题让我陷入困境:
Type,似乎有一个内部类型Type,但不同于公众System.Type.虽然Type我的代码不存在这种内部类型,但它确实存在于Roslyn中,并且Roslyn感到困惑.目前解决此问题的方法是完全限定类似这样的类型:
/// <summary><see cref="Y(System.Type)"/>.</summary>
public void X() { }
Run Code Online (Sandbox Code Playgroud)
注意:同样适用Assembly.您必须完全符合该类型的资格System.Reflection.Assembly.
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |