简单的Xamarin Studio加载项空项目模板问题

时间:2017-02-20 12:26:55

标签: templates xamarin monodevelop add-in xamarin-studio

我正在尝试使用“Addin Maker”插件(版本1.3.2)在Xamarin Studio中创建简单的项目模板加载项。 Addin项目参考Monodevelop.Addins包(版本0.3.9)。

我有简单的Manifest.addin.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ExtensionModel>

    <Runtime>
        <Import file="Templates/EmptyTemplate.xpt.xml"/>
    </Runtime>

    <Extension path="/MonoDevelop/Ide/ProjectTemplates">
        <ProjectTemplate id="EmptyTemplate" file="Templates/EmptyTemplate.xpt.xml"/>
    </Extension>
</ExtensionModel>

EmptyTemplate.xpt.xml:

<?xml version="1.0"?>
<Template>
    <TemplateConfiguration>
        <_Name>Test</_Name>
        <Category>crossplat/app/forms</Category>
    </TemplateConfiguration>
    <Actions>
    </Actions>
    <Combine name="test" directory=".">
        <Options>
            <StartupProject>test</StartupProject>
        </Options>
        <Project name="test" directory=".">
            <References>
            </References>
            <Packages>
            </Packages>
            <Files>
            </Files>
        </Project>
    </Combine>
</Template>

可以使用启动/调试插件项目或在终端中创建mpack文件,将插件安装到XS中,而不会出现问题。不幸的是,我的测试项目模板在Multiplatform / App / Xamarin.Forms或Other / Miscellaneous / Generis New Project对话框中不可见。

在日历中可以找到以下条目后启动“新建项目”对话框:

Loaded assembly: /Applications/Xamarin Studio.app/Contents/Resources/lib/monodevelop/AddIns/BackendBindings/MonoDevelop.VBNetBinding.dll [External]
INFO [2017-02-20 13:16:17Z]: Add-in loaded: MonoDevelop.ILAsmBinding
INFO [2017-02-20 13:16:17Z]: Add-in loaded: test.test
Loaded assembly: /Applications/Xamarin Studio.app/Contents/Resources/lib/monodevelop/AddIns/BackendBindings/ILAsmBinding.dll [External]

插件在IDE Extensions部分的XS插件管理器中也可见。

这个简单的模板加载项出了什么问题?

2 个答案:

答案 0 :(得分:1)

1)在Manifest.addin.xml移除<Runtime></Runtime>部分。

2)由于您对模板使用“file =”引用,请确保将这些模板文件的构建操作设置为 AddinFile < / p>

示例Properties/Manifest.addin.xml

<?xml version="1.0"?>
<ExtensionModel>
    <Extension path="/MonoDevelop/Ide/ProjectTemplates">
        <ProjectTemplate id="RealmEmptyProject" file="templates/PsEmptyProject.xpt.xml" />
    </Extension>
</ExtensionModel>

示例模板:

<?xml version="1.0" encoding="UTF-8"?>
<Template Originator="SushiHangover">
    <TemplateConfiguration>
        <Icon>md-project</Icon>
        <LanguageName>C#</LanguageName>
        <_Name>Realm (Viper) Project</_Name>
        <Category>other/net/general</Category>
        <_Description>Creates an empty Realm Database Viper (MVVM-hybrid) project</_Description>
        <DefaultFilename>RealmViperProject</DefaultFilename>
        <GroupId>md-realm-project</GroupId>
    </TemplateConfiguration>

    <Combine name="${ProjectName}" directory=".">
        <Project name="${ProjectName}" directory=".">
            <References>
                <Reference type="Package" refto="System" LocalCopy="false" SpecificVersion="true" />
            </References>
            <Packages>
                <package id="Realm" />
            </Packages>
        </Project>
    </Combine>
</Template>

enter image description here

答案 1 :(得分:1)

1)感谢@sushihangover的回答。这也是我问题的一部分。

在我的场景中,只要选择了复制到输出目录的xpt文件,它就可以使用<Runtime>部分和每个Build操作。

2)我还注意到,使用“play”选项从一个XS实例安装到新调试实例的插件并不总是干净安装/卸载。因此,当我使用xpt中的一个选项进行播放时,直到我从新的调试XS实例手动卸载加载项并清理项目时才考虑它。

3)上面的场景可能发生在我使用XS随附的原始Xamarin.Forms模板中找到<GroupId>部分时。我将<GroupId>md-xamarin-forms-project</GroupId>从他们的模板复制到我的测试xpt,因此无法为同一<LanguageName>填充第二个模板。在删除<GroupId>部分,卸载加载项并清理项目之前,我无法使其正常工作。