编译转换:类型'对象'在未引用的程序集中定义

时间:2016-02-15 14:55:22

标签: c# asp.net asp.net-mvc typescript typelite

我在asp.Net MVC5 webapp中进行了一些更改,其中我使用typelite从C#类创建.ts定义(非常方便)。由于某种原因,我在执行T4时遇到了这个错误:

  
    

编译转换:类型'对象'在未引用的程序集中定义。您必须添加对assembly&m; mscorlib的引用,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes'。

  

和这个警告:

  
    

编译转换:假设程序集引用' mscorlib,Version = 1.0.3300.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'由EnvDTE'使用匹配identity' mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'对于' mscorlib',您可能需要提供运行时策略Mair.Tracking.Web

  

我想这是与TypeLite使用的EnvDTE版本相关的东西以及对mscorlib EnvDTE使用的引用。我应该在web.config中添加bindingRedirect吗?

我使用VS2015和Update2 CTP。

5 个答案:

答案 0 :(得分:10)

我可以确认可移植类库与T4模板结合在Visual Studio 2015 Update 2中导致了这个问题。我无法找到更好的解决方案,然后将TypeLITE重新定位到完整的.NET框架。

从版本1.8.0开始,TypeLITE nuget包中包含一个以完整.NET框架为目标的库副本。如果您的项目面向完整的.NET框架,则在安装过程中会选择正确的TypeLITE程序集,并且Visual Studio 2015 Update 2中的一切正常。不幸的是,如果您的项目面向PCL,那么您对Visual Studio 2015 Update 2运气不佳。我是寻求更好的解决方案。

答案 1 :(得分:7)

感谢Ian Yates打开Connect项目。

Microsoft于2016年5月4日重新发布了KB3151378。我可以确认此更新解决了T4模板与EDMX文件一起使用时的问题。不幸的是我没有使用TypeLite,所以我无法确认它是否解决了OP的问题,尽管我怀疑它确实存在。

从KB页面:

  

第6期:

     

在T4模板中,当您引用为不同于桌面(完整)框架的.NET Framework版本构建的程序集时,会发生错误。例如,引用可移植库时会发生错误。

答案 2 :(得分:2)

看起来这应该由KB3151378修复。

版本14.0.25130.0的注释:

  

第6期

     

在T4模板中,当您引用为不同于桌面(完整)框架的.NET Framework版本构建的程序集时,会发生错误。例如,引用可移植库时会发生错误。

答案 3 :(得分:1)

特别是对于TypeLite,我打开了它的副本(相当过时,但我已经调整它以满足我的需要)并且停止它是一个可移植的库。这是按照https://stackoverflow.com/a/23135170/1053381的步骤完成的。现在它不是一个可移植的库,我可以再次执行我的T4模板。

我的解决方案中有许多其他T4模板使用ImmutableObjectGraph(搜索GitHub),尽管它也使用了可移植的库,但它们运行良好。我没有深入研究细节,但我了解到mscorlib 2.0.5.0与可移植库等相关联,而且我们真的不需要TypeLite本身就可以移植。

希望这有助于其他人。

https://blogs.msdn.microsoft.com/visualstudio/2016/03/03/visual-studio-2015-update-2-rc/还有一个开放的Connect问题,因为这在VS2015 Update 2中仍然是一个回归。

答案 4 :(得分:0)

我安装了TypeLite 1.5.1的完整版本(Regular WebApplication .Net Full version 4.5.1),简单更新到1.8.1有助于解决问题。所以我应该说VS 2015 Update2 RC和Update2 RTM既不适用于TypeLite的完整版本也不适用于PORTABLE(是的,版本1.5.1已经有便携版本)