2012-05-24 7 views
2

Salut à tous je suis en train de faire un Addin MonoDevelop que je peux utiliser pour compiler sur Mono pour des projets de NaCl ... mais je reçois une erreur ref nul et ne trouve pas assez d'informations pour comprendre ce qui ne va pas.MonoDevelop Addin pour NaCl en utilisant « ProjectServiceExtension »

L'arbitre null se produit lorsque je tente de créer un projet de mon Addin à MonoDevelop. Toutes les ressources sont définies en tant que 'EmbeddedResource'.

Builder.cs:

using System; 
using MonoDevelop.Projects; 
using MonoDevelop.Core; 

namespace MonoDevelop.MonoNaCl 
{ 
    public class Builder : ProjectServiceExtension 
    { 
     protected override BuildResult Build (IProgressMonitor monitor, SolutionEntityItem item, ConfigurationSelector configuration) 
     { 
      Console.WriteLine("Yahoo Build"); 
      return base.Build (monitor, item, configuration); 
     } 

     protected override void Execute (IProgressMonitor monitor, SolutionEntityItem item, ExecutionContext context, ConfigurationSelector configuration) 
     { 
      Console.WriteLine("Yahoo Execute"); 
      base.Execute (monitor, item, context, configuration); 
     } 
    } 
} 

MonoDevelop.MonoNaCl.addin.xml: NOTE: Je ne suis vraiment pas clair de l' « extension que je devrais utiliser et je pense que la question est là .

<Addin namespace = "MonoDevelop" 
     id   = "MonoNaCl" 
     name  = "Mono for NaCl" 
     author  = "Andrew Witte" 
     copyright = "BSD" 
     url   = "http://www.URL.com" 
     description = "Support for developing MonoNaCl applications." 
     category = "NaCl Development" 
     version  = "1.0"> 

    <Dependencies> 
     <Addin id="Ide" version="3.0" /> 
     <Addin id="Core" version="3.0" /> 
    </Dependencies> 

    <Extension path = "/MonoDevelop/Ide/ProjectTemplates"> 
     <ProjectTemplate id = "MonoNaClProject" resource = "MonoNaCl.xpt.xml"/> 
    </Extension> 

    <Extension path = "/MonoDevelop/ProjectModel/ProjectServiceExtensions"> 
     <Class class = "MonoDevelop.MonoNaCl.Builder"/> 
    </Extension> 

    <!--<Extension path = "/MonoDevelop/ProjectModel/MSBuildItemTypes"> 
     <SolutionItem type="MonoDevelop.MonoNaCl.Builder" extension="csproj" guid="{49DFC40D-C27A-4230-A637-8D9669269586}"/> 
    </Extension>--> 

    <Extension path="/MonoDevelop/ProjectModel/SerializableClasses"> 
     <DataType class="MonoDevelop.MonoNaCl.Builde" /> 
    </Extension> 
</Addin> 

MonoNaCl.xpt.xml:

<?xml version="1.0"?> 
<Template originator = "Andrew Witte"> 

    <TemplateConfiguration> 
     <_Name>MonoNaCl Project</_Name> 
     <_Category>C#/MonoNaCl</_Category> 
     <LanguageName>C#</LanguageName> 
     <_Description>Creates a MonoNaCl project.</_Description> 
    </TemplateConfiguration> 

    <Combine name = "${ProjectName}" directory = "."> 
     <Options> 
      <StartupProject>${ProjectName}</StartupProject> 
     </Options> 

     <Project name = "${ProjectName}" directory = "." type = "MonoNaCl"> 
      <Options/> 
     </Project> 
    </Combine> 
</Template> 

Et voici l'erreur après avoir essayé de créer un projet:

System.NullReferenceException: Object reference not set to an instance of an object 
    at MonoDevelop.Projects.SolutionFolderItemCollection.OnItemAdded (MonoDevelop.Projects.SolutionItem item) [0x0000b] in /Users/builder/data/lanes/monodevelop-mac-3.0.1/6642975f/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolderItemCollection.cs:59 
    at MonoDevelop.Projects.ItemCollection`1[MonoDevelop.Projects.SolutionItem].InsertItem (Int32 index, MonoDevelop.Projects.SolutionItem item) [0x00008] in /Users/builder/data/lanes/monodevelop-mac-3.0.1/6642975f/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ItemCollection.cs:39 
    at System.Collections.ObjectModel.Collection`1[MonoDevelop.Projects.SolutionItem].Add (MonoDevelop.Projects.SolutionItem item) [0x00000] in <filename unknown>:0 
    at MonoDevelop.Ide.Templates.SolutionDescriptor.CreateEntry (MonoDevelop.Projects.ProjectCreateInformation projectCreateInformation, System.String defaultLanguage) [0x0026c] in /Users/builder/data/lanes/monodevelop-mac-3.0.1/6642975f/source/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SolutionDescriptor.cs:162 
    at MonoDevelop.Ide.Templates.ProjectTemplate.CreateWorkspaceItem (MonoDevelop.Projects.ProjectCreateInformation cInfo) [0x00000] in /Users/builder/data/lanes/monodevelop-mac-3.0.1/6642975f/source/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs:232 
    at MonoDevelop.Ide.Projects.NewProjectDialog.CreateProject() [0x001ef] in /Users/builder/data/lanes/monodevelop-mac-3.0.1/6642975f/source/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectDialog.cs:432 

Répondre

3

Retirez le type = "MonoNaCl" définition d'attribut dans l'élément Project. Vous n'avez pas besoin de définir le type de projet, sauf si vous définissez votre propre sous-classe de projet.

+0

Ok cela a fonctionné tnx, négligé les docs. Aussi, si je veux écrire dans la fenêtre de sortie de la construction, quelle méthode dois-je utiliser? Console.WriteLine ou Debug.WriteLine ne fonctionnent pas ... – zezba9000

Questions connexes