Xamarin插件参考安装位置

Xamarin add-in reference installation location

我正在编写一个添加项目模板的插件。该模板需要使用默认模板也使用的一些文件。

我正在寻找类似 ${ProjectName} 变量但用于安装文件夹的东西。是否存在类似的东西或者是否有其他我可以使用的解决方法?

这是

<Files>
                <Directory name="Resources">
                    <RawFile name="Default.png" src="${Reference To Installation Folder}/Templates/iOS/Default.png" />
                    <RawFile name="Default@2x.png" src="${Reference To Installation Folder}/Templates/iOS/Default@2x.png" />
                </Directory>
</Files>

我假设您指的是安装 Xamarin Studio 的安装文件夹。

我还假设您不能使用您的插件分发这些文件,因为它们是 Xamarin Studio 的一部分并且仅在 MonoDevelop 中不可用。

据我所知,没有 property/parameter 指定 Xamarin Studio 的安装位置。

RawFile 中的 src 属性不支持替换参数,因此即使有指向 Xamarin Studio 安装位置的参数也无法使用。

所以你有两个我能想到的选择:

  1. 为您的 project template 实施向导。
  2. 实现您自己的 RawFile 模板。

项目模板向导意味着您只能支持 Xamarin Studio 5.9 及更高版本。所以我暂时忽略这个。以上两个选项的实现方式相似。

对于您自己的 RawFile 模板版本,您可以定义要在 addin.xml 文件中使用的 class:

<Extension path = "/MonoDevelop/Ide/FileTemplateTypes">
    <FileTemplateType name = "RawFileNoExtension" class = "MyAddin.MyRawFileExtensionTemplate"/>
</Extension>

然后您可以创建自己的文件扩展名模板class。这是取自现有 RawFileDescriptionTemplate 的示例,但我删除了一些错误处理:

public class MyRawFileExtensionTemplate : RawFileDescriptionTemplate
{
    FilePath contentSrcFile;

    public override void Load (XmlElement filenode, FilePath baseDirectory)
    {
        base.Load (filenode, baseDirectory);
        var srcAtt = filenode.Attributes["src"];

        // TODO: Replace src with path to Xamarin Studio.

        contentSrcFile = FileService.MakePathSeparatorsNative (srcAtt.Value);
        contentSrcFile = contentSrcFile.ToAbsolute (baseDirectory);
    }

    public override Stream CreateFileContent (SolutionItem policyParent, Project project, string language,
        string fileName, string identifier)
    {
        return File.OpenRead (contentSrcFile);
    }
}

您需要用代码替换 TODO 部分以查找 Xamarin Studio 的安装位置。一种方法是在 Xamarin Studio 的一个程序集中查找类型,然后获取程序集的位置。