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

C# 编译转换:类型';对象';在未引用的程序集中定义,c#,asp.net,asp.net-mvc,typescript,typelite,C#,Asp.net,Asp.net Mvc,Typescript,Typelite,我在一个asp.NETMVC5WebApp中做了一些更改,在这个应用中,我使用C#类创建.ts定义(非常方便)。由于某种原因,现在我在执行T4时出现了以下错误: 编译转换:类型“Object”是在未引用的程序集中定义的。您必须添加对程序集“mscorlib,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e,Retargetable=Yes”的引用 这一警告: 编译转换:假设“EnvDTE”使用的程序集引用“mscorl

我在一个asp.NETMVC5WebApp中做了一些更改,在这个应用中,我使用C#类创建.ts定义(非常方便)。由于某种原因,现在我在执行T4时出现了以下错误:

编译转换:类型“Object”是在未引用的程序集中定义的。您必须添加对程序集“mscorlib,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e,Retargetable=Yes”的引用

这一警告:

编译转换:假设“EnvDTE”使用的程序集引用“mscorlib,Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”与“mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”的标识“mscorlib,Version=4.0.0.0,Culture=neral,PublicKeyToken=b77a5c561934e089”匹配,则可能需要提供运行

我猜这与TypeLite使用的EnvDTE版本以及对mscorlib EnvDTE使用的引用有关。我应该在web.config中添加bindingRedirect吗


我将VS2015与Update2 CTP一起使用。

专门针对TypeLite,我打开了它的副本(相当过时,但我已经调整了它以满足我的需要),并不再是一个可移植的库。这是按照上的步骤完成的。现在它不是一个可移植的库,我可以再次执行我的T4模板了

在使用ImmutableObjectGraph(search GitHub)的解决方案中,我有许多其他T4模板,尽管它们也使用了一个可移植库,但运行良好。我没有深入探讨细节,但我了解到mscorlib 2.0.5.0与可移植库等相关,实际上我们不需要TypeLite本身就可以移植

希望这能帮助别人


由于这在VS2015更新2中仍然是一个回归,因此在上还有一个开放的连接问题。

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


从1.8.0版开始,TypeLITE nuget包包含针对完整.NET framework的库的副本。如果您的项目以完整的.NET framework为目标,则在安装过程中会选择正确的TypeLITE程序集,并且在Visual Studio 2015 Update 2中一切正常。不幸的是,如果您的项目以PCL为目标,那么使用Visual Studio 2015 Update 2就太不走运了。我正在寻找更好的解决方案。

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

感谢您打开了连接项

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

从知识库页面:

第6期:

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


看来这应该由你来解决

14.0.25130.0版的注意事项:

第6期

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


我不使用typelite,但我也收到了mscorlib警告,因为我将VS2015更新为CTP 2。我发现了你的问题,正在阅读VS2015版本的“完美-与我完全相同的情况”,等等。当我没有看到答案时,我感到悲伤。我猜是更新2 CTP的错。我将在几个小时后安装Update 2 RC,因此如果该帮助支持Update 2 RC,我将返回报告并给出答案,相同的错误我已为此打开一个连接项:Update 2 RTM中的相同问题。而且,作为记录,我的.tt文件不访问任何外部第三方库,也不是针对PCL的,它只是一个标准的T4模板,不做任何引人注目的事情,只是使用EnvDTE(这是我的.tt文件所抱怨的程序集)。谢谢!这对我来说很有效(警告仍然存在,但错误已经消失,并且运行成功)。对于其他来这里的人,您可以从以下位置下载最新版本的TypeLite:。我只需要转换一个项目,名为“TypeLite.Net4”。另一个“TypeLite”已经是类库了。最后一步是从您的项目中卸载TypeLite nuget软件包,并添加对这些新编译DLL的引用。很高兴它帮助了其他人:)@mythz也应该得到关于ServiceStack的通知。请尝试安装KB3151378 for VS 2015 Update 2。我在VS 2019中遇到了.NET Core 3.1应用程序的此问题预览2。有人找到了真正的解决办法吗?