繁体   English   中英

如何间接使用.NET 2.0程序集中的FCL 4.0代码?

[英]How to indirectly use FCL 4.0 code from a .NET 2.0 assembly?

我正在尝试在我正在编写的项目中使用T4代,不幸的是,我不得不为客户定位.NET 2.0,但我似乎无法避免使用FCL 4.0库或找到一种方式VS将让我从一个目标2.0访问目标4.0的程序集中的类型。

我们的想法是声明一个T4Attribute ,它可以用来装饰消费项目中的部分类型。 然后,T4将根据属性的详细信息生成该类型的额外代码。 例如,标准配置模式的大多数样板部件只需使用单行属性修饰即可添加到类型中。

我正在推导我自己的自定义TextTransformation以支持这一点,但由于我有VS2010,我无法安装VS2005 / 8 SDK,只能安装VS2010,这意味着我正在使用的TextTransformation是在.NET 4.0 DLL中(Microsoft .VisualStudio.TextTemplating.10.0)。 因此该属性位于同一个DLL中,当我尝试从消费项目中引用该DLL时,它只能看到两种类型,如果两者都针对相同的框架版本。 一旦项目为2.0且库为4.0,VS就不再找到引用的类型或命名空间。

我想它认为既然应用程序将启动CLRv2运行,它将无法在v4 DLL(可能使用dynamic等)中运行代码。 足够公平但实际上库中的类型只能通过T4模板在开发PC上看到,为那些T4Attribute告诉它生成代码的项目扫描项目 - 我假设VS2010中的T4引擎在CLRv4下运行。 这些属性甚至不会被编译到发布版本中。

我仍然处于学习曲线的最底层。 我做错了吗,是否有更简单的方法,如果没有,是否有办法绕过我的问题? 尽管有错误的VS版本,我能否以某种方式获得较旧的VisualStudio DLL?

创建两个程序集。 首先,以.NET 2.0为目标,定义您描述的T4Attribute,然后以.NET 4.0为目标,定义自定义TextTransformation。 这样,您可以从产品代码和第二个程序集中引用第一个程序集,以实现代码生成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM