gpt4 book ai didi

c# - Visual Studio 2010 升级后生成的(通过 T4 模板)dll 运行时不兼容

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:06 26 4
gpt4 key购买 nike

我们刚刚将我们的主要项目从 Visual Studio 2008 切换到 2010。我希望一切都像我之前转换的其他项目一样顺利,但这个不是这样......

该项目有一个 T4 模板,它读取一个带有正则表达式的 xml 文件,并将它们编译为我们的解决方案中包含的 dll(使用 Regex.CompileToAssembly)。转换解决方案后,生成的 dll 将 4.0 作为目标,因此无法从我们的 3.5(2.0 运行时)项目中引用它。

我已经尝试过了,但没有成功:

<#@ template language="C#v3.5" hostspecific="true" #>
<#@ assembly name="System.Core, Version=3.5.0.0" #>

有什么想法吗?

最佳答案

听起来您真的只是将 T4 用作一种脚本运行程序,而不是从模板系统本身生成输出。相反,您明确地将输出生成为程序集。

VS2010 中的 T4 始终使用 4.0 运行时/clr 进行编译,并且似乎没有办法要求 RegEx.Compile 方法吐出 2.0 程序集。

即使您将 RegEx.Compile 移动到针对 2.0 构建的帮助程序库中,然后当加载到 4.0 CLR 中时,它也只会统一到 4.0 版本。

相反,您需要一种将 2.0 CLR 放入内存的方法,目前最简单的方法是将您的模板代码移动到它自己的 exe 中。

然后您可以从自定义项目预构建规则中调用此 exe。

关于c# - Visual Studio 2010 升级后生成的(通过 T4 模板)dll 运行时不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5258743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com