1

您好,我在构建时遇到了 MonoGame 的问题,我在 opengl32.dll 中遇到了 glbind... 错误,因此建议我找到我的 GUID,这听起来像是一项简单的任务,但我查看了项目文件夹文件并找不到我找到了一个

<ProjectGuid>{325BCA73-8459-49AF-9C31-D4A268BF8A1A}</ProjectGuid>

但我正在寻找这样的

<ProjectTypeGuids>{9B831FEF-F496-498F-9FE8-180DA5CB4258};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

这是我的文件夹和主要“collisions”.csproj 文件的图像,我在其中找到了一个 GUID。我已经做了一些研究,但我似乎无法找到关于在哪里寻找的答案。 这里

更准确地说,我正在寻找 Projecttypeguids,这样我就可以删除其中一个,看看是否能按照这里的建议解决我的问题....我认识到我在顶部的措辞有点模糊抱歉

这里

4

3 回答 3

1

您给出的第一个示例是项目的 GUID。因此ProjectGuid
第二个是项目的项目类型的 GUID 列表。因此ProjectTypeGuids

如果您正在寻找项目的 GUID,第一个示例就是为您提供正确答案。

于 2013-06-05T01:22:11.983 回答
0

首先,您没有提到您使用的是什么 winforms 或 wpf。

好吧,无论如何。winforms不支持ProjectTypeGuids,如果你使用wpf,你可以找到它们。

如果您使用的是 wpf,则可以使用以下代码:

 public string GetProjectTypeGuids(EnvDTE.Project proj)
       {

      string projectTypeGuids = "";
      object service = null;
      Microsoft.VisualStudio.Shell.Interop.IVsSolution solution = null;
      Microsoft.VisualStudio.Shell.Interop.IVsHierarchy hierarchy = null;
      Microsoft.VisualStudio.Shell.Interop.IVsAggregatableProject aggregatableProject = null;
      int result = 0;

      service = GetService(proj.DTE, typeof(Microsoft.VisualStudio.Shell.Interop.IVsSolution));
      solution = (Microsoft.VisualStudio.Shell.Interop.IVsSolution)service;

      result = solution.GetProjectOfUniqueName(proj.UniqueName, hierarchy);

      if (result == 0)
      {
         aggregatableProject = (Microsoft.VisualStudio.Shell.Interop.IVsAggregatableProject) hierarchy;
         result = aggregatableProject.GetAggregateProjectTypeGuids(projectTypeGuids);
      }

      return projectTypeGuids;

   }

   public object GetService(object serviceProvider, System.Type type)
   {
      return GetService(serviceProvider, type.GUID);
   }

   public object GetService(object serviceProviderObject, System.Guid guid)
   {

      object service = null;
      Microsoft.VisualStudio.OLE.Interop.IServiceProvider serviceProvider = null;
      IntPtr serviceIntPtr;
      int hr = 0;
      Guid SIDGuid;
      Guid IIDGuid;

      SIDGuid = guid;
      IIDGuid = SIDGuid;
      serviceProvider = (Microsoft.VisualStudio.OLE.Interop.IServiceProvider)serviceProviderObject;
      hr = serviceProvider.QueryService(SIDGuid, IIDGuid, serviceIntPtr);

      if (hr != 0)
      {
         System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(hr);
      }
      else if (!serviceIntPtr.Equals(IntPtr.Zero))
      {
         service = System.Runtime.InteropServices.Marshal.GetObjectForIUnknown(serviceIntPtr);
         System.Runtime.InteropServices.Marshal.Release(serviceIntPtr);
      }

      return service;
   }

它来自这里

于 2013-06-05T02:21:03.083 回答
0

您链接到的屏幕截图显示了一个没有列出任何类型 GUID 的项目。如果存在,则该值主要由开发工具使用(例如,VS 使用它来确定要在上下文菜单中包含哪些项目以添加新项目。)如果没有项目类型 GUID,您的项目仍将“工作”最多部分,但您可能会在您选择的 IDE 中遇到奇怪的行为。

您问题中的项目类型 GUID 值对于使用 MonoGame 插件的 C# 应用程序的项目是正确的。如果您的项目文件缺少该标记,只需使用您希望项目拥有的任何 GUID 自行添加即可。

(可以在此处找到知名 GUID 的列表,但 MonoGame 是我必须在 Google 上查找的。)

于 2013-06-05T01:37:42.993 回答