我正在使用带有VS2013的Web Essentials 2013。
我有一个.md文件,用于编写有关服务的文档。预览工作正常,我甚至使用WE-Markdown.css
和WE-Markdown.html
进行更漂亮的预览。但是当它编译为HTML(使用&#34; Web Essentials - &gt;编译Markdown到HTML&#34;上下文菜单选项)时,它只会使用任何<html>
或<body>
标记生成等效输出
有没有办法告诉它编译它的方式与生成预览的方式相同?
否则,我必须更改我的项目构建,以使用模板使用其他内容编译markdown。
我尝试打开源代码,但我无法使用VS2013加载解决方案(或者我错过了一些SDK)。我无法在GitHub的源代码中找到编译的位置。
答案 0 :(得分:1)
我最终创建了一个PowerShell脚本来执行编译+模板化并在后期构建事件中调用它。
这是:
PARAM(
[string]
[Parameter(Mandatory = $True)]
$MarkdownPath,
[string]
$Title
)
$MarkdownPath = Resolve-Path $MarkdownPath;
if (-not $Title)
{
$Title = $MarkdownPath;
}
# Adjust this to your solution. There might be a better way to find WE-Markdown.html
$solutionPath = Resolve-Path $PSScriptRoot;
# Same for packages path
$cmarkExe = (Get-ChildItem (Join-Path $solutionPath .\packages\**\cmark.exe) -Recurse)[0].FullName;
$out = $MarkdownPath.Replace(".md", ".html");
$compiled = & $cmarkExe $MarkdownPath | Out-String;
$template = Get-Content (Join-Path $solutionPath WE-Markdown.html) -Encoding UTF8 -Raw;
$result = $template -replace "{##TITLE##}", $Title `
-replace "{##SOLUTION_PATH_PLACEHOLDER##}", $solutionPath `
-replace "{##PROJECT_PATH_PLACEHOLDER##}", "" `
-replace "{##DOCUMENT_PATH_PLACEHOLDER##}", $MarkdownPath `
-replace "{##MARKDOWN_HTML_PLACEHOLDER##}", $compiled `
-replace "language-C#", "csharp"; # Replace any other thing that is relevant to your project
Set-Content -Path $out -Value $result -Encoding UTF8;
这是一个包含所有https://github.com/cdroulers/webessentials-markdown-template
的github存储库示例构建后事件:
PowerShell.exe $(SolutionDir)Generate-Documentation.ps1 $(ProjectDir)docs\*.md Web_Page_Title_Here