C# 智能感知中引起问题的双重引用
首先我解释我们当前的项目结构,然后是问题陈述 我有一个CRM插件项目,该项目引用了另一个服务项目。为了部署我正在使用ILMerge的项目,所以在编译插件项目时,它还将包含所有服务项目合同和模型。我也在同一个解决方案上创建了单元测试项目,我为服务项目编写了测试方法(通过参考服务项目)。所有测试方法都工作正常 现在我们改变了策略,在插件项目上进行单元测试,而不是在服务项目上。所以我删除了服务的引用并添加了插件的引用,所有的单元测试在运行时仍然通过。因为运行时程序集内部包含服务类属性和方法 但是在编辑单元测试时,我们失去了VisualStudio提供的intellisense帮助,因为我们没有直接引用服务项目,如果我尝试同时引用服务和插件,那么就会出现编译时错误,说这些类是通过插件存在的 在这里,我想使用intellisense来生成更好的代码,并且不希望出现双重引用问题C# 智能感知中引起问题的双重引用,c#,.net,visual-studio,ilmerge,C#,.net,Visual Studio,Ilmerge,首先我解释我们当前的项目结构,然后是问题陈述 我有一个CRM插件项目,该项目引用了另一个服务项目。为了部署我正在使用ILMerge的项目,所以在编译插件项目时,它还将包含所有服务项目合同和模型。我也在同一个解决方案上创建了单元测试项目,我为服务项目编写了测试方法(通过参考服务项目)。所有测试方法都工作正常 现在我们改变了策略,在插件项目上进行单元测试,而不是在服务项目上。所以我删除了服务的引用并添加了插件的引用,所有的单元测试在运行时仍然通过。因为运行时程序集内部包含服务类属性和方法 但是在编辑
有人能帮我解决这个问题吗。终于找到了解决办法 所以你有了汇编
A,B
并将它们合并到M'
(A,B->M
)。然后是Test
project,其中使用了A、B、M中的类型
A
,B
M
assembly,我只引用了原始M.dll
不包含A、B
类型。该组件已投入使用
M/obj/$(配置名称)文件夹。(合并的M'
程序集位于bin文件夹中)
因此,在添加引用时,不要添加项目引用,而是浏览到../M/obj/Release/M.dll
Test.csproj
并查找
<Reference Include="M">
<HintPath>..\M\obj\Release\M.dll</HintPath>
</Reference>
..\M\obj\Release\M.dll
将HintPath
替换为。\M\obj\$(配置名称)\M.dll
Test
取决于A、B、M
M
时将A、B
类型内部化(公共类型变为内部),但当您部署到CRM时,代理内容(即从OrganizationRequeset/Response继承的类,在使用方法时必须反序列化)必须是公共的。从内部化中排除这些类型会导致重复的类型错误
若您只合并了测试项目中引用的M'
,它将解决另一个问题。如果您碰巧在Test
项目中使用了A
中定义的某个接口,并且您碰巧测试了C
也使用此类型的功能。。。错误,它只是抱怨错误CS0012:类型“SomeType”是在未引用的程序集中定义的。必须添加对程序集的引用
。我怀疑这是因为在Test
项目中,您实际使用的是M'
assembly中的类型,它与C
assembly中使用的A
中的接口不同