![](/img/trans.png)
[英]Moq.CastleProxyFactory' Could not load file or assembly 'Castle.Core
[英]How to reference Castle.DynamicProxy.IProxyTargetAccessor from Castle.Core rather than Moq?
我有一個同時依賴Moq
和Castle.Core
的測試,並嘗試引用Castle.DynamicProxy.IProxyTargetAccessor
接口
問題是Moq
將Castle.Core
代碼嵌入到其中(不確定全部或部分),因此Castle.DynamicProxy.IProxyTargetAccessor
在這兩個程序集中都顯示為public
。
現在,我正在顯式地使用Castle.Core
創建動態代理(由於可見性范圍減小,無法使用Moq
嵌入的代碼),因此該代理實現了接口的Castle.Core
風格。
令人尷尬,但是我不知道如何告訴編譯器使用正確的接口,或者是否有可能。
編輯1
但是單擊任何選擇都無濟於事。 可能是一個Rider錯誤,因為它必須使用某些C#語法來明確地定位Castle.Core
程序集。 但是不確定它是否存在。
我可以使用反射來重寫代碼,但是我很好奇這是否具有編譯時解決方案。
編輯2
刪除對Castle.Core
引用不起作用:
DynamicProxyFactory.cs(20, 26): [CS0122] 'ProxyGenerator' is inaccessible due to its protection level
DynamicProxyFactory.cs(27, 67): [CS0122] 'IInterceptor' is inaccessible due to its protection level
DynamicProxyFactory.cs(43, 38): [CS0122] 'IInterceptor' is inaccessible due to its protection level
DynamicProxyFactory.cs(91, 31): [CS0122] 'IInvocation' is inaccessible due to its protection level
這是因為Moq
並未真正引用Castle.Core
。 相反,它可能是在ilmerge的幫助下嵌入其中的。 但是顯然,它修改了我要使用的某些接口的可見性范圍。 因此,使用它們時會出現編譯錯誤。
編輯3
由Reflector提供:
正如人們所看到Castle.DynamicProxy.IInterceptor
的Moq
是internal
。 雖然它是在Castle.Core
的最新版本中Castle.Core
。
因此,我沒有找到如何從程序集中顯式引用類型,但是https://stackoverflow.com/users/5101046/scott-hannen的注釋使我意識到,可以將Moq
升級到最新版本,而無需不再嵌入Castle.Core
,但通常引用它。 那解決了我的障礙。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.