RootNamespace 未用作命名空间前缀

RootNamespace not being used as namespace prefix

提问人:russelrillema 提问时间:10/17/2022 最后编辑:russelrillema 更新时间:10/20/2022 访问量:367

问:

我最近创建了一个新的 .net6 项目,并将我的源代码移到了其中。 我在项目文件中设置了以下内容

<RootNamespace>$(MSBuildProjectName.Replace(" ", "_"))</RootNamespace>

在项目属性中,应用程序底部有一个部分 -> 常规,有一个“默认命名空间”,其中也有“$(MSBuildProjectName.Replace(” “, ”_“))”

为了解决这个问题,我完全省略了解决方案,让我们假设我的项目结构如下

MyProject(这是包含项目文件 MyProject.csproj 的项目)

  • DB(这是项目中的文件夹)
    • MySQL(这是DB文件夹下的子文件夹)
    • MSSQL(这是 DB 文件夹下的子文件夹)
  • UI(这是项目中的文件夹)

如果我在项目的根级别添加一个新类,它的命名空间是 MyProject,但是如果我向 DB 添加一个新类,它的命名空间是 DB。

我希望这是我的项目.DB

同样,如果我向 MSSQL 项目添加一个新类,我会得到一个命名空间 分贝。MSSQL,而我希望这是MyProject.DB.MSSQL

我尝试将 $(MSBuildProjectName.Replace(“ ”, “_”)) 硬编码为 MyProject,但这无济于事。

C# visual-studio 命名空间 NET-6.0

评论

0赞 madreflection 10/17/2022
Visual Studio 没有“子”项目。如果“DB”是一个项目,那么“MSSQL”就不是一个项目。也许它是“DB”项目下的文件夹?目前尚不清楚这种结构的每个节点应该是什么。而且,如果“DB”是一个项目,用 表示,则该属性与预期的完全相同,因为它被定义为“没有文件扩展名的项目文件的文件名;例如,MyApp。DB.csprojMSBuildProjectName
0赞 madreflection 10/17/2022
解决方案名称(表面上是“MyProject”所代表的,但同样不清楚)不是其中的一部分。
0赞 Housheng-MSFT 10/18/2022
如果DB是一个项目,那么“MSSQL”就不是一个项目。制作数据库项目的子文件夹?
0赞 russelrillema 10/18/2022
为了清楚起见,我在此示例中完全省略了解决方案名称。我将更新问题以使其更清楚

答:

0赞 russelrillema 10/20/2022 #1

尽管这听起来很奇怪,但问题出在 WebView2 版本 1.0.1343.22 上 更新到版本 1.0.1370.28 解决了该问题

我还在一个只有 1 个项目且没有其他依赖项的新解决方案中重新创建了它,以确保情况如此。

有趣的是,默认的 using 语句也不同。

安装 1.0.1343.22 版后,创建一个新的类文件,您将获得

using System;
using System.Collections.Generic;
using System.Text;

namespace DB.MsSQL
{
    internal class Class1
    {
    }
}

而在版本 1.0.1370.28 中,新的类文件如下所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WebView2NamespaceIssue.DB.MsSQL
{
    internal class Class2
    {
    }
}

这两个类都是在同一项目的同一文件夹中创建的。 唯一的区别是更改了所引用的 WebView2 的版本