提问人:russelrillema 提问时间:10/17/2022 最后编辑:russelrillema 更新时间:10/20/2022 访问量:367
RootNamespace 未用作命名空间前缀
RootNamespace not being used as namespace prefix
问:
我最近创建了一个新的 .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,但这无济于事。
答:
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 的版本
评论
DB.csproj
MSBuildProjectName