包使用根名称空间,这是我的主要 class 名称之一

Package uses root namespace that is one of my main class names

我正在为我的项目使用 IronPython。设置如下:

Project.Main
  - MyProject.Python
     - IronPython package

Project.Main 有一个名为 Community 的 class,它是主要的 classes 之一。 无处不在

现在 IronPython 有一个叫做 Communitynamespace。CsharpSqlite 有一个叫做 Sqlite3 的 class。

我的所有代码都不再编译了,因为我得到:

Error CS0118 'Community' is a namespace but is used like a type

这是一个非常大的项目,我不想开始为我对社区 class 的所有引用添加命名空间前缀。

示例项目:

https://www.dropbox.com/s/hayi3a4ctrh8rlx/NamespaceProblem.zip?dl=0

更新:

要解决此问题,我们需要编辑 ConsoleApp1.csproj 文件并在底部添加:

  <Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
    <ItemGroup>
      <ReferencePath Condition="'%(FileName)' == 'IronPython.SQLite'">
        <Aliases>IronPythonCommunity</Aliases>
      </ReferencePath>
    </ItemGroup>
  </Target>
<!-- </Project> -->

然后我们可以使用以下代码在我们的代码中加载新修改的外部别名:

extern alias IronPythonCommunity;
using Community = MyProject.Python.Community;
using System;

旧:

据我所知,您无法更改导入的 DLL 或 NuGet 的命名空间。通常你想使用 using like

using Community = MyProj.MyProject.Python;

或使用完全限定的命名空间(您可以使用 CTRL+H 将所有出现的 Community 替换为MyProject.Python.Community):

static void Test(MyProject.Python.Community x)
{
}