我正在编写一个添加项目模板的插件。此模板需要使用默认模板使用的一些文件。
我正在寻找像${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>
答案 0 :(得分:1)
通过安装文件夹我假设您的意思是安装了Xamarin Studio。
我还假设您不能使用您的插件分发文件,因为它们是Xamarin Studio的一部分,而不仅仅是MonoDevelop。
据我所知,没有属性/参数指定Xamarin Studio的安装位置。
RawFile中的src属性不支持替换参数,因此即使有一个参数指向Xamarin Studio的安装位置,也无法使用它。
所以你有两个我能想到的选择:
项目模板向导意味着您只能支持Xamarin Studio 5.9及更高版本。所以我暂时忽略这一点。上述两个选项在实现方式上都类似。
对于您自己的RawFile模板版本,您可以定义要在addin.xml文件中使用的类:
<Extension path = "/MonoDevelop/Ide/FileTemplateTypes">
<FileTemplateType name = "RawFileNoExtension" class = "MyAddin.MyRawFileExtensionTemplate"/>
</Extension>
然后,您可以创建自己的文件扩展名模板类。以下是从现有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的一个组件中找到一个类型,然后获得组件的位置。