1

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

Project.Main
  - MyProject.Python
     - IronPython package

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

现在 IronPython 有一个名为Community .CsharpSqlite 的命名空间和一个名为 Sqlite3 的类。

  • 我不需要MyProject.Main 中引用此类
  • 我没有直接使用 MyProject.Main 中 IronPython 包中的任何类
  • 我只提到 MyProject.Python 中的包装类。

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

错误 CS0118 'Community' 是命名空间,但用作类型

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

示例项目:

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

4

1 回答 1

1

更新:

为了解决这个问题,我们需要编辑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替换所有出现的Communitywith MyProject.Python.Community):

static void Test(MyProject.Python.Community x)
{
}
于 2021-09-15T12:38:42.683 回答