【问题标题】:How to reference GTK assemblies in MonoDevelop on ubuntu如何在 ubuntu 上的 MonoDevelop 中引用 GTK 程序集
【发布时间】:2020-07-27 17:49:44
【问题描述】:

我已经通过 apt 安装了 libgtk2.0-cil 和 libgtk2.0-cil-dev 和 gtk-sharp2

但是当我打开 References->Edit References->Packages 时,它不存在。

https://www.monodevelop.com/help/faq/ 说 MonoDevelop 使用 pgk-config 和 .pc 文件来定位程序集。

/usr/lib/pkgconfig 中有一个 gtk-sharp-2.0.pc 文件

我在 Ubuntu 18.04 上使用 MonoDevelop 7.8.4 (build2)

我的项目针对 .net 4.8

如何让 MonoDevelop 发现我的 GTK 尖锐组件?

这些程序集也存在于 GAC 中

gacutil -l | grep gdk

policy.2.8.gtk-dotnet,版本=0.0.0.0,文化=中性, PublicKeyToken=35e10195dab3c99f policy.2.6.gtk-sharp,版本=0.0.0.0, 文化=中立,PublicKeyToken=35e10195dab3c99f policy.2.10.gtk-dotnet,版本=0.0.0.0,文化=中性, PublicKeyToken=35e10195dab3c99f policy.2.8.gtk-sharp,版本=0.0.0.0, 文化=中立,PublicKeyToken=35e10195dab3c99f policy.2.4.gtk-dotnet,版本=0.0.0.0,文化=中性, PublicKeyToken=35e10195dab3c99f gtk-sharp,版本=2.12.0.0, 文化=中性,PublicKeyToken=35e10195dab3c99f gtk-sharp, 版本=3.0.0.0,文化=中性,PublicKeyToken=35e10195dab3c99f policy.2.4.gtk-sharp,版本=0.0.0.0,文化=中性, PublicKeyToken=35e10195dab3c99f gtk-dotnet,版本=2.12.0.0, 文化=中立,PublicKeyToken=35e10195dab3c99f policy.2.10.gtk-sharp,版本=0.0.0.0,文化=中性, PublicKeyToken=35e10195dab3c99f policy.2.6.gtk-dotnet, 版本=0.0.0.0,文化=中性,PublicKeyToken=35e10195dab3c99f

【问题讨论】:

    标签: c# .net ubuntu gtk monodevelop


    【解决方案1】:

    MonoDevelop 从 GAC 加载它们,因此您的项目文件应该包含,

      <ItemGroup>
        <Reference Include="System" />
        <Reference Include="gtk-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
          <SpecificVersion>False</SpecificVersion>
        </Reference>
        <Reference Include="gdk-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
          <SpecificVersion>False</SpecificVersion>
        </Reference>
        <Reference Include="glib-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
          <SpecificVersion>False</SpecificVersion>
        </Reference>
        <Reference Include="glade-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
          <SpecificVersion>False</SpecificVersion>
        </Reference>
        <Reference Include="pango-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
          <SpecificVersion>False</SpecificVersion>
        </Reference>
        <Reference Include="atk-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
          <SpecificVersion>False</SpecificVersion>
        </Reference>
        <Reference Include="Mono.Posix" />
      </ItemGroup>
    

    【讨论】:

    • 来自常见问题解答“MonoDevelop 不会在 GAC 中查找程序集。在 Mac 和 Linux 上,MonoDevelop 使用 pkg-config 来定位已安装的包并获取每个包提供的程序集列表。一个包指定此 .pc 文件中的程序集列表,必须安装在标准 pkg-config 目录中。”
    • 我觉得你的答案在windows上可能是正确的,但是在ubuntu/linux上就错了,问题中特别提到了。
    • 我在上面输入的所有内容都来自 VS for Mac(又名 MonoDevelop)本身生成的默认 GTK# 项目,我在 Mac 上,而不是 Windows。 MonoDevelop 的常见问题解答和主页可能已经过时了。
    • 今晚我会试试这个,但是我会指出 References->Edit References->Packages 不包括它们作为选项,我是否应该手动将它们添加到 GAC 中?好像如果 MonoDevelop 使用 GAC 并且默认情况下将它们添加到 GAC 中,那么它们已经在引用列表中。
    • 我尝试使用 MonoDevelop 生成器创建 GTK# 项目,所有 gtk# 程序集引用旁边都有红色 x。 MonoDevelop 根本找不到程序集,但它们肯定已安装。我的项目文件看起来像你的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    相关资源
    最近更新 更多