简单的 Xamarin Studio 加载项空项目模板问题
Simple Xamarin Studio add-in empty project template issues
我正在尝试使用 "Addin Maker" 插件(版本 1.3.2)在 Xamarin Studio 中创建简单的项目模板插件。插件项目引用 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>
可以使用 launch/debug 插件项目或通过在终端中创建 mpack 文件将插件毫无问题地安装到 XS 中。不幸的是,我的测试项目模板在 Multiplatform/App/Xamarin.Forms 或 Other/Miscellaneous/Generis 新项目对话框下不可见。
启动“新建项目”对话框时,可以在日志中找到以下条目:
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]
插件在 XS 插件管理器中的 IDE 扩展部分下也可见。
这个简单的模板加载项有什么问题?
1) 在您的 Manifest.addin.xml
中删除 <Runtime></Runtime>
部分。
2) 由于您正在为模板使用 "file=" 引用,因此请确保将这些模板文件的 Build Action 设置为 AddinFile
示例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>
1) 感谢@sushihangover 的回答。这也是我问题的一部分。
在我的场景中,只要选择了复制到 xpt 文件的输出目录,它也适用于 <Runtime>
部分和每个构建操作。
2) 我还注意到使用 "play" 选项从一个 XS 实例安装到新调试实例的插件并不总是干净的 installed/uninstalled。因此,例如,当我在我的 xpt 中使用其中一个选项时,直到我从新的调试 XS 实例手动卸载 add-in 并清理项目时,它才被考虑在内。
3) 当我在使用 XS 提供的原始 Xamarin.Forms 模板中找到的 <GroupId>
部分时,可能会发生上述情况。我将 <GroupId>md-xamarin-forms-project</GroupId>
从他们的模板复制到我的测试 xpt,因此无法为相同的 <LanguageName>
填充第二个模板。在删除 <GroupId>
部分、卸载 add-in 并清理项目之前,我无法使其工作。
我正在尝试使用 "Addin Maker" 插件(版本 1.3.2)在 Xamarin Studio 中创建简单的项目模板插件。插件项目引用 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>
可以使用 launch/debug 插件项目或通过在终端中创建 mpack 文件将插件毫无问题地安装到 XS 中。不幸的是,我的测试项目模板在 Multiplatform/App/Xamarin.Forms 或 Other/Miscellaneous/Generis 新项目对话框下不可见。
启动“新建项目”对话框时,可以在日志中找到以下条目:
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]
插件在 XS 插件管理器中的 IDE 扩展部分下也可见。
这个简单的模板加载项有什么问题?
1) 在您的 Manifest.addin.xml
中删除 <Runtime></Runtime>
部分。
2) 由于您正在为模板使用 "file=" 引用,因此请确保将这些模板文件的 Build Action 设置为 AddinFile
示例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>
1) 感谢@sushihangover 的回答。这也是我问题的一部分。
在我的场景中,只要选择了复制到 xpt 文件的输出目录,它也适用于 <Runtime>
部分和每个构建操作。
2) 我还注意到使用 "play" 选项从一个 XS 实例安装到新调试实例的插件并不总是干净的 installed/uninstalled。因此,例如,当我在我的 xpt 中使用其中一个选项时,直到我从新的调试 XS 实例手动卸载 add-in 并清理项目时,它才被考虑在内。
3) 当我在使用 XS 提供的原始 Xamarin.Forms 模板中找到的 <GroupId>
部分时,可能会发生上述情况。我将 <GroupId>md-xamarin-forms-project</GroupId>
从他们的模板复制到我的测试 xpt,因此无法为相同的 <LanguageName>
填充第二个模板。在删除 <GroupId>
部分、卸载 add-in 并清理项目之前,我无法使其工作。