如果这是一个愚蠢的问题,我很抱歉,但我已经花了两天时间,而且无法让它发挥作用。 这是我做的:
sayHi()
<compilation><assemblies><add assembly="gacTestClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31418215e131202e" />
中添加了以下内容。这很好用,因为如果我拼错了程序集名称,任何.net应用程序都会失败并抱怨该行。 using gacTestClass
或gacTestClass.gacTest.sayHi()
时,我的应用程序失败了。我收到一条错误消息,指出无法找到类型或命名空间。 感谢任何帮助。
编辑:
好的,我遵循了一个建议,我将尝试使用web.config,而不是machine.config。
我将以下内容添加到我的web.config <compilation><assemblies><add assembly="gacTestClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31418215e131202e" />
中,并确保通过拼写错误名称并观看应用程序失败来实现。
现在,当我尝试将using gacTestClass
添加到我的.cs文件的顶部时,我收到一条错误消息,指出无法找到类型或命名空间。
以防万一,这是gacTestClass的代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
[assmbly:AssemblyKeyFile("sayHi.snk")]
namespace gacTestClass {
public class gacTest {
public string sayHi() {
return "Hello there!";
}
}
}
答案 0 :(得分:4)
试试这个:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Namespace" publicKeyToken="token" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
</assemblyBinding></runtime>
将编译部分从machine.config移到web.config并尝试一下。它应该在machine.config中正常工作,但我认为如果你是GAC一个程序集,许多应用程序将使用它。您将希望每个应用程序能够选择要使用的DLL版本(以便更轻松地升级路径)。
此外,似乎很明显,但请确保您尝试访问的方法(gacTestClass.gacTest.sayHi())是公开的。
答案 1 :(得分:3)
编辑:尝试右键单击项目,单击“添加引用”,然后添加DLL文件。
通常,您不应该修改machine.config
。