2.0 到 3.5 项目转换后,Visual Studio 2010 编译器看不到 Web 引用命名空间

发布于 2024-10-19 05:16:16 字数 868 浏览 7 评论 0原文

我在 Visual Studio 中收到一个没有任何意义的构建错误:

命名空间“My.Project”中不存在类型或命名空间名称“MyService”(是否缺少程序集引用?)

命名空间 MyService 是在 Web 引用中定义的。在对象浏览器中,我可以清楚地看到该名称空间以及其中定义的所有类。 Web 参考中的任何代码都没有编译错误。

当我将框架目标从 2.0 更改为 3.5 后,代码停止编译。为什么编译器会卡住,我该如何解决这个问题?我已经尝试更新网络参考,但问题仍然存在。我什至尝试注释掉生成的“Reference.cs”中的代码并将代码复制到项目中的另一个代码文件中,但仍然看不到命名空间。

我的项目引用以下内容:

System                     2.0.0.0
System.Data                2.0.0.0
System.EnterpriseServices  2.0.0.0
System.Net                 3.5.0.0
System.Web.Services        2.0.0.0
System.Xml                 2.0.0.0

更新

不仅仅是我的 Web 服务生成的代码存在编译问题;它还包括我的 Web 服务生成的代码。对于转换为 .NET 3.5 的所有项目,我无法引用它们的命名空间。

我仍然不确定为什么会发生这种情况,但我找到了解决方法;通过将 using Ns = My.Project.MyService 添加到我的代码中,我能够使用 Ns.MyType 引用命名空间中的类型。

I'm getting a build error in Visual Studio that's not making any sense:

The type or namespace name 'MyService' does not exist in the namespace 'My.Project' (are you missing an assembly reference?)

The namespace MyService is defined in a Web Reference. In the Object Browser, I can clearly see that namespace and all of the classes defined in it. There are no compile errors for any of the code in the Web Reference.

The code stopped compiling after I changed the framework target from 2.0 to 3.5. Why could the compiler be choking, and how can I go about fixing this? I already tried updating the web reference, but the problem remains. I even tried commenting out the code in the generated "Reference.cs" and copying the code to another code file in the project, and the namespace was still not seen.

My project is referencing the following:

System                     2.0.0.0
System.Data                2.0.0.0
System.EnterpriseServices  2.0.0.0
System.Net                 3.5.0.0
System.Web.Services        2.0.0.0
System.Xml                 2.0.0.0

Update

It isn't just my web service generated code that is having compile problems; for all of the projects converted to .NET 3.5, I cannot reference their namespaces.

I'm still not sure why this is all happening, but I found a workaround; by adding a using Ns = My.Project.MyService to my code, I was able to reference types in the namespace with Ns.MyType.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彩虹直至黑白 2024-10-26 05:16:16

这显然被记录为 Visual Studio 中的错误:

https://connect.microsoft.com/VisualStudio/feedback/details/570557/targeting-net-framework-3-5-actually-targets-3-0-gac

我利用了帖子中记录的解决方法,将 System.Web.Extensions.dll 从 C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5 复制到 C:\Program Files\Reference Assemblies\Microsoft\Framework\v3 .0。然后我重新启动了 Visual Studio。

仅此一点并不能解决问题。复制程序集后,我必须重新进行从 2.0 到 3.5 的项目转换。新的转换后,代码按预期编译。在解决方法之前和之后的项目文件之间进行比较并没有发现任何实质性差异,因此构建错误一定是由于 Visual Studio 的某些内部状态造成的。

This is apparently documented as a bug in Visual Studio:

https://connect.microsoft.com/VisualStudio/feedback/details/570557/targeting-net-framework-3-5-actually-targets-3-0-gac

I utilized the workaround documented in the post by copying System.Web.Extensions.dll from C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5 to C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0. Then I restarted Visual Studio.

That alone didn't fix the problem. I had to redo the project conversion from 2.0 to 3.5 after the assembly was copied. After the new conversion, the code compiled as expected. Doing a diff between the project file pre- and post-workaround didn't reveal any substantial differences, so the build errors must have been due to some internal state of Visual Studio.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文