gpt4 book ai didi

c# - 包使用根命名空间,它是我的主要类名之一

转载 作者:行者123 更新时间:2023-12-04 16:55:22 25 4
gpt4 key购买 nike

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

Project.Main
- MyProject.Python
- IronPython package
Project.Main 有一个名为 Community 的类那是主要类(class)之一。它无处不在。
现在 IronPython 有一个名为 的命名空间社区 .CsharpSqlite 带有一个名为 Sqlite3 的类。
  • 我不需要在 MyProject.Main
  • 中引用这个类
  • 我没有直接使用 MyProject.Main 中 IronPython 包中的任何类
  • 我只引用 MyProject.Python 中的包装类。

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

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


    这是一个非常大的项目,我不想开始使用命名空间前缀为我对 Community 类的所有引用添加前缀。
  • 有什么解决方法吗?
  • 我可以只向 MyProject.Python 公开 IronPython 命名空间吗?
  • 我尝试了 Aliases 和 PrivateAssets 选项,但我在解决方案资源管理器中收到一个警告符号,它似乎不起作用(仍然是 CS0118)
  • https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files

  • 示例项目:
    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)
    {
    }

    关于c# - 包使用根命名空间,它是我的主要类名之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68795458/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com