问题标签 [internalsvisibleto]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 InternalsVisibleTo 进行单元测试不适用于使用动态参数的内部方法
我正在尝试使用InternalsVisibleTo来允许我从单独的测试程序集中测试实用程序/辅助方法。当我尝试使用动态参数调用内部方法时,我收到错误“ RuntimeBinderException 未处理...由于其保护级别而无法访问。 ”
我相信我正确使用了InternalsVisibleTo属性,因为我能够测试其他不使用动态参数的内部方法。以下代码说明了只有TestInternalMethodWithDynamic测试失败的场景,如下所示。我已经使用实例方法而不是静态方法重复了测试,这没有任何区别。
.NET 技术是 Silverlight 5,我使用Silverlight 单元测试框架来执行测试。由于项目的 Excel 自动化要求,我需要使用动态参数。
编辑:我已经使用 .NET 4 类库程序集测试了相同的调用,并且它是成功的,因此问题似乎特定于Silverlight。
示例实用程序类...
还有测试课...
wcf - iis上的Wcf朋友程序集,在运行时不起作用
我有关于 InternalsVisibleTo 的问题。
我有一个名为A的程序集,有一个内部测试类我有一个托管在iis上的 Wcf 服务 ( WcfService1 ) ,它通过静态链接引用这个程序集(在 Visual Studio 上添加引用)。
我有A - AssemblyInfo.cs文件:
我构建A.dll并将其添加到 WcfService1。显然,在WcfService1类上,我调用了A.dll的内部方法,智能感知 正确地向我发出了方法名称、变量等的信号。
它编译顺利,没有显示任何问题。
但是,当我在他的服务器上构建和运行时,服务器给了我一个编译错误:
CS0122“方法调用”由于其保护级别而无法访问
所以我很困惑:在 Visual Studio IDE 中,我正确地获得了自动完成功能并且没有构建错误。运行时不能使用内部方法?!
其他信息:我尝试使用强命名和不使用(通过命令提示符计算公钥),结果相同(在 IDE 上没问题,运行时崩溃)。
visual-studio-2012 - Sgen 在 VS2012 中使用内部设置器抛出错误
仅当所有设置器都是公共的时,SGen 才会生成 xml 序列化程序集吗?
我在 DummyProject 有这个课程:
在我的 AssemblyInfo.cs 中,我声明了这一点:
在我的 csproj 中,我放了这个:
当前错误是:
无法反序列化类型“DummyProject.DummyClass”,因为它包含没有公共设置器的属性“Sequence”。
我尝试过的: 1. 现在,如果我取出内部设置器,生成 DummyProject.XmlSerializer 没有问题。
我错过了什么吗?
我的 assemblyinfo.cs 不包含其中 1 个陷阱中列出的内容:
- 我也尝试过签署我的程序集并修改 InternalsVisibleTo 以包含公钥,但我仍然遇到同样的错误。
InternalsVisibleTo 有问题吗?
基于这篇文章,即使使用内部设置器,SGen 应该仍然能够生成 xml 序列化程序集。
SGEN、InternalsVisibleTo 和程序集签名
- 我没有使用后期构建步骤来生成 xml 序列化程序集。我是在开发人员命令提示符中完成的,并且为没有内部设置器的类成功创建了程序集。现在,我将此程序集复制到我的项目输出并将我的属性设置器更改为内部。由于内部设置器,我在序列化期间遇到错误。
当然,我在 AssemblyInfo.cs 中添加了 InternalsVisibleTo。
.net - 是否存在可接受 InternalsVisibleTo 的非单元测试场景
似乎将此属性用于非公共方法/属性的单元测试之外的任何事情都会产生巨大的代码气味。该属性是否有任何合法用途InternalsVisibleTo
来实现使用标准设计模式可能无法/过于繁琐的事情?
c# - InternalsVisibleTo 和类继承
我正在使用InternalsVisibleTo
属性使单元测试套件可以看到一些内部类。
虽然它允许我创建内部类的实例,但我无法创建从内部类继承的类。
这种行为是预期的吗?如果是,还有其他方法可以实现我想要的吗?
编辑:正如@Grant Thomas 所指出的,我没有说出我想要的。我想要的是创建一个抽象内部类的实例。这不是我正在测试的那个类,而是我正在测试的类将它作为依赖项。
c# - InternalsVisibleTo 不起作用
我插入以下行:
[assembly: InternalsVisibleTo("MyTests")]
在我的 test( Properties/AssemblyInfo.cs
)项目MyTests
中,单元测试项目的名称在哪里。但由于某种原因,我仍然无法从单元测试项目中访问内部方法。
关于我做错了什么的任何想法?
c# - 有没有办法让代码分析忽略“InternalsVisibleTo”?
我们有很多包含内部类的程序集,我们使用这些内部类进行单元测试,InternalsVisibleTo
以使内部类对单元测试程序集可见。
这很好用,但问题是,一旦您使用InternalsVisibleTo
,它会阻止代码分析 CA1812 警告(避免未实例化的内部类)。
它还可以防止 CA1811:“避免未调用的私有代码”。
我已经进行了一些调查,并且发现了很多未使用的内部类,因此我们没有被警告。
我目前的解决方案是手动编辑每个程序集中的“AssemblyInfo.cs”文件以临时注释掉,InternalsVisibleTo
以便我可以只编译该项目并发现未使用的内部类。
这是一个巨大的麻烦,当然,如果这样的事情不能自动完成,它通常根本不会完成。
一个解决方案是能够告诉代码分析忽略该InternalsVisibleTo
属性。
有谁知道这种可能性是否存在?
c# - CodeContracts 静态检查表明,尽管使用 InternalVisibleTo,但另一个程序集的内部类的成员不够可见
我正在 Visual Studio 2012 中编写一个程序,并且我在两个单独的项目中有一对类:
项目A:
项目B:
在AssemblyInfo.cs
ProjectB 中,我还有:
这编译得很好,直到我打开 CodeContract 静态分析。此时,我从 ccrewrite: 收到错误消息Member 'Test.B.X' has less visibility than the enclosing method Test.A.#ctor(Test.B)
。
我能想到的唯一可能导致问题的是 CodeContracts 不知道 ProjectA 可以看到 ProjectB 的内部,因此认为B
在这种情况下 class 的可见性基本上是没有的。虽然如果我将断言更改为b != null
,它似乎没问题,所以也许这个论点不成立。
任何人都可以确认这个断言,或者给我一个正确的解释,并且没有删除Requires
、关闭 CodeContracts 或更改 的可见性B
,有没有办法解决这个错误?
c# - 我可以将 InternalsVisibleTo 用于 C++ 托管代码吗?
我有 C++ 托管项目。我想用 C# Nunit 类库来测试它。我将 C++ 类定义为
以及如何使其对 C# 类库可见?
c# - InternalsVisibleTo 属性问题
我有两个程序集,比如Main和Sub,其中Sub取决于Main。Main定义了一些具有protected internal virtual
成员的类,我想在Sub中覆盖它们。我将这些成员覆盖为protected override
.
Main中有一个不相关的类,称为Main.Shared,我想在Sub中使用它,但我不希望任何其他程序集看到它。情况如下:
所以我InternalsVisibleTo
像往常一样使用该属性。但是,在我用这个属性装饰Main之后,代码拒绝编译。错误消息说我现在必须覆盖DoStuff
as protected internal override
,大概是因为它现在认为Main和Sub是同一个程序集(?)
这是一个大问题,因为这意味着我需要手动将每个覆盖更改为受保护的内部,而且其中有很多。此外,我可能想稍后删除该属性,然后我需要再次更改所有内容。
有什么办法可以避免这样做吗?(除了代码库的完全重新设计......)
我也很好奇为什么会发生这种情况。这种行为只是某种盲点,还是应该像这样工作?