解决 'WaitWnd.WaitWndFun'不包含以下定义'SetText'?

tim8w

知名会员
已加入
2020年9月8日
留言内容
81
编程经验
10+
你好,
我试图将一个例程'SetText'添加到一个类。它显示在解决方案资源管理器中:

1611691146133.png


但是,如果我尝试访问该变量,则会收到错误消息:

'WaitWnd.WaitWndFun'不包含'SetText'的定义,也找不到扩展方法'SetText'接受类型为'WaitWnd.WaitWndFun'的第一个参数(您是否缺少using指令或程序集引用?

我也尝试将其设置为Property,并获得相同的结果。

有任何想法吗?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,539
地点
弗吉尼亚州切萨皮克
编程经验
10+
Show us the code (in code tags, not a screenshot) where you are trying to call SetText().

Also, SetText() is a method, not a variable based on that screenshot.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,539
地点
弗吉尼亚州切萨皮克
编程经验
10+
Is WaitWnd.WaitWndFun in another assembly than the code from post #3? If so, have you recompiled the other assembly 成功地 recently?
 

tim8w

知名会员
已加入
2020年9月8日
留言内容
81
编程经验
10+
Is WaitWnd.WaitWndFun in another assembly than the code from post #3? If so, have you recompiled the other assembly 成功地 recently?
是的,但是其他两个公共函数不会给我任何错误,并且可以正常工作。

C#:
WaitWnd.WaitWndFun waitForm = new WaitWnd.WaitWndFun();

waitForm.SetText("Loading");
waitForm.Show(this);

奇怪的是,当我单击上下文菜单时"Go To Definition",元数据中的清单不包含我的SetText()函数。

C#:
#region Assembly WaitWnd.dll, v1.0.0.0
// C:\Users\a3055389\Desktop\WaitforWnd_Sources\WaitWnd\bin\Debug\WaitWnd.dll
#endregion

using System;
using System.Windows.Forms;

namespace WaitWnd
{
    public class WaitWndFun
    {
        public WaitWndFun();

        public void Close();
        public void Show();
        public void Show(Form parent);
    }
}
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,539
地点
弗吉尼亚州切萨皮克
编程经验
10+
这就是为什么我认为该程序集与您在解决方案资源管理器屏幕快照中显示的代码相比已经过时的原因。清洁装配体。
 

tim8w

知名会员
已加入
2020年9月8日
留言内容
81
编程经验
10+
这就是为什么我认为该程序集与您在解决方案资源管理器屏幕快照中显示的代码相比已经过时的原因。清洁装配体。
干净的构建没有帮助。我再次重新输入了所有代码,现在元数据看起来正确,但是仍然出现相同的错误。

C#:
using System;
using System.Windows.Forms;

namespace WaitWnd
{
    public class WaitWndFun
    {
        public WaitWndFun();

        public void SetText(string sText);
        public void Close();
        public void Show();
        public void Show(Form parent);
    }
}

'WaitWnd.WaitWndFun'不包含'SetText'的定义,也找不到扩展方法'SetText'接受类型为'WaitWnd.WaitWndFun'的第一个参数(您是否缺少using指令或程序集引用?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,539
地点
弗吉尼亚州切萨皮克
编程经验
10+
是否有任何特殊原因为什么要添加对另一个程序集的引用,而不是添加对构建另一个程序集的项目的引用?
 

tim8w

知名会员
已加入
2020年9月8日
留言内容
81
编程经验
10+
终于弄清楚了。不知道是否有更简单的方法来解决它,但是我将解释发生了什么以及如何最终使其起作用。所以一个项目/课程给我带来了问题"WaitWnd,WaitWndFun"是从我在其他地方构建的另一个解决方案中提取的,并添加到了我当前正在研究的解决方案中。看起来,即使将整个项目复制到了我计算机上的新解决方案空间中,DLL所在的位置仍被硬编码到".csproj"文件,并且没有大量的Clean build,re-builds或其他任何更改".csproj"文件。当我看着".csproj"文件在文本编辑器中,并注意到它正在从旧解决方案的目录中找到DLL的位置。因此,我更改了新项目的路径,并重新加载了解决方案,重新编译,一切正常。这是".csproj" file I modified:

C#:
<HintPath>WaitWnd\bin\Debug\WaitWnd.dll</HintPath>

有没有办法在VisualStudio中完成此任务?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,539
地点
弗吉尼亚州切萨皮克
编程经验
10+
所以我对过时的程序集被引用是正确的。

在Visual Studio中,您可以卸载项目(据我所知,这是右键单击,然后"Unload Project"在解决方案资源管理器中),然后将.CSPROJ编辑为XML的HintPath。完成编辑后,重新加载项目。

但是,所有这些都处理了在Visual Studio 2005或2008中引用程序集的症状。如果像在Visual Studio的现代版本中那样实际引用了该项目,则应该不是问题。
 
最佳 底部