如何在 ColdFusion 中使用 C#.NET 程序集?
Posted
技术标签:
【中文标题】如何在 ColdFusion 中使用 C#.NET 程序集?【英文标题】:How can I use C#.NET assemblies in ColdFusion? 【发布时间】:2020-08-19 11:10:44 【问题描述】:我的公司有一个用 ColdFusion 编写的 Web 应用程序,我正在尝试集成一个用 C#.Net 编写的 API。我对.Net 开发还很陌生,所以我可能对术语不太了解。我创建了一个非常简单的 C# 类来使用 ColdFusion 进行测试,定义如下:
namespace FIX
public class IntegersTest
public int Add(int n, int m)
return n + m;
我能够构建这个类并输出一个 .dll (FIX.dll)。现在我使用以下代码创建一个 ColdFusion 文件:
<cfobject type="dotnet" class="FIX.IntegerTest" name="math" action="create"
assembly="C:\path\to\file\FIX.dll">
当我尝试运行它时,我收到以下错误:
Class FIX.IntegerTest not found in the specified assembly list.
The assembly that contains the class must be provided to the assembly attribute.
在 dotnet 错误日志中,我看到“正在中止代理生成,因为在依赖类列表中未找到任何类。这可能意味着程序集中不存在类 FIX.IntegerTest。”
我已尝试重新安装 ColdFusion .Net 服务以及 ColdFusion 本身。我尝试以 .Net Framework 3.0 为目标并重新构建该类。我已经为 cfobject 标记的类属性尝试了多种变体。我不太确定还能做什么。
需要注意的是,下面的ColdFusion代码没有报错:
<cfobject type="dotnet" name="sidiClass" class="System.IO.DriveInfo">
我正在使用 Visual Studio 2019、ColdFusion 2018,并将我的测试项目的目标框架设置为 .NET 4.7.2。任何和所有输入将不胜感激!谢谢。
编辑 正如@Ageax 所指出的那样,我刚刚打错了字,但是即使我确保拼写正确,我还是在另一堂课上得到了这个。答案是目标框架。 ColdFusion 不喜欢我的目标是 .Net Framework 3.0(由于某种原因,第二个项目不允许我切换到 4.0+)。我用正确的目标框架创建了一个新项目,一切似乎都在工作!
【问题讨论】:
CF 代码有错误的类名,“IntegerTest”(单数)而不是“IntegersTest”(复数)。该名称必须与 C# 类public class IntegersTest
中定义的名称匹配。不过,第一个问题研究得很好。
啊,有点尴尬。感谢您对此的第二次关注和称赞!我遇到了同样的问题,我肯定检查过拼写,所以我没想过要检查这个。
呵呵.. 有时也会发生在我身上。由于您还发现了错误的另一个原因(框架版本),您应该将其发布为答案,而不是编辑。这使得下一个遇到相同问题的人更容易找到解决方案。 (允许在 SO 上回答您自己的问题。)
【参考方案1】:
正如@Ageax 所指出的,我刚刚打错了字,但即使我确保拼写正确,我还是在另一堂课上得到了这个。答案是目标框架。 ColdFusion 不喜欢我的目标是 .Net Framework 3.0(由于某种原因,第二个项目不允许我切换到 4.0+)。我创建了一个具有适当目标框架(4.7.2)的新项目,一切似乎都在工作!
【讨论】:
以上是关于如何在 ColdFusion 中使用 C#.NET 程序集?的主要内容,如果未能解决你的问题,请参考以下文章
如何让Coldfusion 10在Windows 10中与IIS 10一起使用