Microsoft Fakes 找不到 `ICollection` 和 `IDictionary` 接口
Microsoft Fakes can't find the `ICollection` and `IDictionary` interfaces
MS Visual Studio 2015 企业。
我正在学习 Microsoft Fakes Framework。我有两个程序集 AcDbMng.dll
和 AcMng.dll
是由其他公司 (Autodesk) 编写的。他们使用.Net Framework 2.0。我创建了新的 单元测试项目 ,将这些程序集添加到我的项目中,并通过它们的上下文菜单调用“Add Fakes Assembly”。现在我启动我的项目构建并得到 128 个错误...例如:
It wasn't succeeded to find type or a name of a name space of
"ICollection
" (perhaps, there is no directive of using or an assembly
reference). [c:\users\andrey\documents\visual studio
2015\Projects\msfakes\obj\Debug\Fakes\adm\f.csproj] msfakes
c:\users\andrey\documents\visual studio 2015\Projects\msfakes\f.cs
206092
It wasn't succeeded to find type or a name of a name space of
"IDictionary
" (perhaps, there is no directive of using or an assembly
reference). [c:\users\andrey\documents\visual studio
2015\Projects\msfakes\obj\Debug\Fakes\adm\f.csproj] msfakes
c:\users\andrey\documents\visual studio 2015\Projects\msfakes\f.cs
206119
The modifier "override
" is not valid for this item. [c: \ users \
andrey \ documents \ visual studio 2015 \ Projects \ msfakes \ obj \
Debug \ Fakes \ adm \ f.csproj] msfakes c: \ users \ andrey \
documents \ visual studio 2015 \ Projects \ msfakes \ f. cs 206119
这样的错误信息我不是很清楚。我尝试更改目标 .Net Framework 平台:.Net 4.6 和 .Net 3.5,但我收到相同的消息。
ICollection
、IDictionary
、修饰符“override
”...我不明白,它们与这些程序集有什么关系,因为它们是在平台程序集中定义的而不是 AcDbMng.dll
和 AcMng.dll
.
有人知道这种行为吗?
UPD
也许 Autodesk 使用自己的同名接口,我要为 Microsoft Fakes Framework 添加一些额外的 AutoCAD 程序集?
如果我只为 AcMng.dll
生成假的,那么我没有错误。但是如果我也为 AcDbMng.dll
生成假的,那么我就会遇到这些问题。此外,在这种情况下,在 Solution Explorer 中我看到 AcMgd.17.2.0.0.Fakes
出现了,但我没有看到类似 AcDbMgd.17.2.0.0.Fakes
:
的内容
UPD2
可以从 here 下载 AcDbMgd.dll
文件。
UPD3
主题已关闭。有关 fakes
格式的更多详细信息是 here.
您可以尝试使用
之类的内容编辑 AcDbMgd.fakes
和 AcMgd.fakes
文件
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="AcDbMgd" Version="..."/>
<StubGeneration>
<Clear/>
</StubGeneration>
<ShimGeneration>
<Clear/>
<Add FullName="your class of concern"/>
</ShimGeneration>
</Fakes>
您正在限制生成的 类 并明确决定 类 做什么。当我 运行 遇到你遇到的问题时,如果我限制生成的 类,我的运气会更好。如果不能自己重新创建,很难给出更具体的答案。
MS Visual Studio 2015 企业。
我正在学习 Microsoft Fakes Framework。我有两个程序集 AcDbMng.dll
和 AcMng.dll
是由其他公司 (Autodesk) 编写的。他们使用.Net Framework 2.0。我创建了新的 单元测试项目 ,将这些程序集添加到我的项目中,并通过它们的上下文菜单调用“Add Fakes Assembly”。现在我启动我的项目构建并得到 128 个错误...例如:
It wasn't succeeded to find type or a name of a name space of "
ICollection
" (perhaps, there is no directive of using or an assembly reference). [c:\users\andrey\documents\visual studio 2015\Projects\msfakes\obj\Debug\Fakes\adm\f.csproj] msfakes c:\users\andrey\documents\visual studio 2015\Projects\msfakes\f.cs 206092It wasn't succeeded to find type or a name of a name space of "
IDictionary
" (perhaps, there is no directive of using or an assembly reference). [c:\users\andrey\documents\visual studio 2015\Projects\msfakes\obj\Debug\Fakes\adm\f.csproj] msfakes c:\users\andrey\documents\visual studio 2015\Projects\msfakes\f.cs 206119The modifier "
override
" is not valid for this item. [c: \ users \ andrey \ documents \ visual studio 2015 \ Projects \ msfakes \ obj \ Debug \ Fakes \ adm \ f.csproj] msfakes c: \ users \ andrey \ documents \ visual studio 2015 \ Projects \ msfakes \ f. cs 206119
这样的错误信息我不是很清楚。我尝试更改目标 .Net Framework 平台:.Net 4.6 和 .Net 3.5,但我收到相同的消息。
ICollection
、IDictionary
、修饰符“override
”...我不明白,它们与这些程序集有什么关系,因为它们是在平台程序集中定义的而不是 AcDbMng.dll
和 AcMng.dll
.
有人知道这种行为吗?
UPD
也许 Autodesk 使用自己的同名接口,我要为 Microsoft Fakes Framework 添加一些额外的 AutoCAD 程序集?
如果我只为 AcMng.dll
生成假的,那么我没有错误。但是如果我也为 AcDbMng.dll
生成假的,那么我就会遇到这些问题。此外,在这种情况下,在 Solution Explorer 中我看到 AcMgd.17.2.0.0.Fakes
出现了,但我没有看到类似 AcDbMgd.17.2.0.0.Fakes
:
UPD2
可以从 here 下载 AcDbMgd.dll
文件。
UPD3
主题已关闭。有关 fakes
格式的更多详细信息是 here.
您可以尝试使用
之类的内容编辑AcDbMgd.fakes
和 AcMgd.fakes
文件
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="AcDbMgd" Version="..."/>
<StubGeneration>
<Clear/>
</StubGeneration>
<ShimGeneration>
<Clear/>
<Add FullName="your class of concern"/>
</ShimGeneration>
</Fakes>
您正在限制生成的 类 并明确决定 类 做什么。当我 运行 遇到你遇到的问题时,如果我限制生成的 类,我的运气会更好。如果不能自己重新创建,很难给出更具体的答案。