Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio 2013错误:IntelliSense未列出好友程序集的内部类型_C#_Visual Studio 2013_.net Assembly_Internal - Fatal编程技术网

C# Visual Studio 2013错误:IntelliSense未列出好友程序集的内部类型

C# Visual Studio 2013错误:IntelliSense未列出好友程序集的内部类型,c#,visual-studio-2013,.net-assembly,internal,C#,Visual Studio 2013,.net Assembly,Internal,问题定义:我有一个名为IRI.Ket.ShapefileFormat的类库项目,其中包含一些内部的类和结构。我向这个类库介绍了另一个项目。然后我就能够构建我的解决方案并成功运行程序。但是,在编码时,intellisence无法识别这些内部类型和方法。如果我手动编写它们,它们的颜色将与预期的不同。 我正在制作Visual Studio 2013终极版 编辑:在上面的图片中,为什么Shapefile(这是在类库中定义的内部类类型,我在朋友程序集中使用它)不像DataColumn那样着色?这是虫子吗

问题定义:我有一个名为
IRI.Ket.ShapefileFormat
的类库项目,其中包含一些
内部的
类和结构。我向这个类库介绍了另一个项目。然后我就能够构建我的解决方案并成功运行程序。但是,在编码时,intellisence无法识别这些内部类型和方法。如果我手动编写它们,它们的颜色将与预期的不同。

我正在制作Visual Studio 2013终极版

编辑:在上面的图片中,为什么
Shapefile
(这是在类库中定义的内部类类型,我在朋友程序集中使用它)不像
DataColumn
那样着色?这是虫子吗

更奇怪的问题:每次都可以成功构建解决方案,但过了一段时间,错误列表中会出现一些错误,例如
Shapefile。由于其保护级别,无法访问Read
!这是一个快照(所有这些方法都是内部的)。奇怪的是,我不知道有错误的项目可能会成功构建:)


如果您有权访问IRI.Ket.ShapefileFormat的内部版本,请查找assembly.cs文件并添加以下内容:

[组件:InternalsVisibleTo(“此处的组件名称”)]

将评估Shapefile类的项目名称放在上面的字符串引号之间。
然后您的项目可以访问IRI.Ket.ShapefileFormat的内部类型。

我终于找到了问题所在。我有很多使用相同公钥的类库项目。这些库应该作为朋友程序集引入

[assembly: InternalsVisibleTo("Friend1, PublicKey=00240000048000009...")]
[assembly: InternalsVisibleTo("Friend2, PublicKey=00240000048000009...")]
[assembly: InternalsVisibleTo("Friend3, PublicKey=00240000048000009...")]
[assembly: InternalsVisibleTo("Friend4, PublicKey=00240000048000009...")]
所以我认为每次重复公钥都是一种硬编码,我在某处创建了一个
const string
变量,并在属性声明中使用它。然而,在编译时,编译器能够访问它并成功地构建项目,但在设计时却不知道如何解决它

//somewhere
const string key = "PublicKey=00240000048000009...";
//
然后我把那些台词改成这样:

[assembly: InternalsVisibleTo("Friend1, " + key)]
[assembly: InternalsVisibleTo("Friend2, " + key)]
[assembly: InternalsVisibleTo("Friend3, " + key)]
[assembly: InternalsVisibleTo("Friend4, " + key)]

因此,我更改了这些行并使用了硬代码版本,现在IntelliSense和语法着色正在工作。

那么你真的关心IntelliSense,还是语法高亮显示?@JonSkeet两者都不工作。这是一个bug,不是吗?听起来有点奇怪。请尝试在一个简短但完整的程序中复制它,以便我们也可以尝试测试它。@JonSkeet我发现我的代码有什么问题。我实际上知道friend程序集及其工作原理。我错过了阅读你的问题,你说它工作,我的错误。我认为ctrl+shift+r刷新intelliSense,你可以试试。不。它显示智能,但未列出内部成员