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 安装位置的参数也无法使用。
所以你有两个我能想到的选择:
- 为您的 project template 实施向导。
- 实现您自己的 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 的一个程序集中查找类型,然后获取程序集的位置。
我正在编写一个添加项目模板的插件。该模板需要使用默认模板也使用的一些文件。
我正在寻找类似 ${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 安装位置的参数也无法使用。
所以你有两个我能想到的选择:
- 为您的 project template 实施向导。
- 实现您自己的 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 的一个程序集中查找类型,然后获取程序集的位置。