![](/img/trans.png)
[英]type universe cannot resolve assembly opening project in vs2022
[英]VS2022 Extensibility: How to resolve "The type 'XXX' exists in both 'Assembly 1' and 'Assembly2' in T4 template execution
我有一個擴展,我正在從 VS2019 更新到 VS2022。 它是使用建模 SDK 的 DSL,並通過 T4 模板生成代碼。
我幾乎已經轉換了,但是在運行 T4s 時,我得到了
Compiling transformation: The type 'SourceControl' exists in both 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'Microsoft.VisualStudio.Interop, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Compiling transformation: The type 'Project' exists in both 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'Microsoft.VisualStudio.Interop, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Compiling transformation: The type 'Constants' exists in both 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'Microsoft.VisualStudio.Interop, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Compiling transformation: The type 'ProjectItem' exists in both 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'Microsoft.VisualStudio.Interop, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Compiling transformation: The type 'ProjectItems' exists in both 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'Microsoft.VisualStudio.Interop, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Compiling transformation: The type 'DTE' exists in both 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'Microsoft.VisualStudio.Interop, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Compiling transformation: The type 'Solution' exists in both 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'Microsoft.VisualStudio.Interop, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
並且無法弄清楚如何解決這個問題。
我沒有將這些程序集包含在我的主.tt
文件中,也沒有在我的Dsl
或DslPackage
項目中引用它們,但我從其他一些錯誤中了解到我必須解決EnvDTE8.0
和Microsoft.VisualStudio.Interop
隱式可用環境 VS2022 環境的一部分。 由於它們不屬於我的項目,因此我無法使用 Visual Studio Alias
機制來消除歧義。
我已經閱讀了關於類似問題的其他問題,但沒有一個是這個問題,他們的解決方案真的不適用。
感謝任何人可以提供的任何幫助或指導。
今天我的 T4 模板遇到了類似的問題。 在看了你的帖子並在上面閑逛了幾分鍾后,我嘗試了以下操作
我找到了添加EnvDTE
程序集的文件
<#@ assembly name="EnvDTE"#>
並將其更改為
<#@ assembly name="Microsoft.VisualStudio.Interop"#>
這解決了我的問題。
嘗試刪除 EnvDTE 程序集。
<#@ assembly name="EnvDTE"#>
克雷格的解決方案並不適合我。 我發現這個問題是在 T4MVC 的 github 中提出的https://github.com/T4MVC/T4MVC/issues/136#issuecomment-1089244574
對我有用的建議解決方案是:
我通過刪除 EnvDTE、EnvDTE80 和 Microsoft.VisualStudio.Shell.Interop 的程序集導入來解決此問題。 (命名空間導入仍然是必需的。)
這顯然與其他建議相似,但我認為它略有不同,因為這些似乎對我不起作用,或者我誤解了它們。 為了解決這個問題,我所做的只是刪除了三個建議的導入行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.