Visual Studio 解决方案中的 Markdown 文档

Sam*_*erg 8 c# markdown visual-studio

我使用 c# 和 Visual Studio 2017 启动了一个新项目。我的目标是管理 Visual Studio 中的文档,将所有文件放在一个地方,并在 TFS/Git 中拥有完整且易于访问的历史记录。
我有src文件夹中的代码,文件夹中的测试项目,test文件夹中作为 Markdown 文件的文档docs(我使用Markdown Editor)。根文件夹中还有一个Readme.md:

在此处输入图片说明

现在有一些问题:

  • Visual Studio 中的结构与文件系统中的结构不同。我在 Visual Studio 中创建的所有 md 文件都放在解决方案的根目录中。我可以在 Windows 资源管理器中创建文件并添加“现有项目”,但这很痛苦。
  • 我可以在 Visual Studio 中移动 md 文件,但它们不会在文件系统中移动。
  • 所有文件引用都保存在 sln 文件中,该文件会发生很大变化。我想避免这种情况。

我阅读了有关创建一个空的 c# 项目并禁用该项目的构建的信息,但这似乎也是一个 hack。

是否有一些建议可以在 Visual Studio 中管理文档文件?

Nig*_*888 4

本答案所示,可以使用Visual Studio 2017 中的链接文件功能链接整个目录,前提是您使用新的.csproj项目格式并且除了 Visual Studio 2017 15.3+ 之外还安装了 .NET Core 2.0 SDK 。

<EmbeddedResource Include="..\..\..\docs\**\*.md" LinkBase="docs" />
Run Code Online (Sandbox Code Playgroud)

这将docs使用项目的相对路径将子文件夹链接到项目中名为docs(LinkBase)的文件夹。每次在文件夹或嵌套文件夹中添加、删除或更改文件时docs,Visual Studio 都会识别这些更改(如果文件已打开,它可能会提示您更新 Visual Studio 中的文件)。

在此输入图像描述

请注意,您还可以在其他MSBuild 项目项上使用此功能EmbeddedResource,例如ContentCompileNone

项目

从技术上讲,Visual Studio 解决方案文件项目。.sln您可以通过在文本编辑器中打开文件来看到这一点:

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{4016BDAB-6C33-4D1E-9439-57B416EA45D5}"
    ProjectSection(SolutionItems) = preProject
        build.bat = build.bat
        build\build.ps1 = build\build.ps1
        src\CommonAssemblyInfo.cs = src\CommonAssemblyInfo.cs
        TestTargetFramework.proj = TestTargetFramework.proj
        Version.proj = Version.proj
    EndProjectSection
EndProject
Run Code Online (Sandbox Code Playgroud)

不幸的是,该.sln格式没有提供很多选项。正如您在Hack the Project and Solution Files中看到的,它ProjectSection只是列出了项目的依赖项,并且可以选择指定“真实”相对文件路径。但仅此而已。根据这个类似的问题,不可能将一个目录链接到.sln文件中的另一个目录。

上述解决方案项“项目”和.csproj项目之间的唯一区别在于,后者转移了对将文件添加到.csproj(MSBuild) 文件的位置的控制。

Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyProject", 
"src\MyProject\MyProject.csproj", "{3A0AA37E-2B7B-4416-B528-DA4E0E6A6706}"
EndProject
Run Code Online (Sandbox Code Playgroud)

然而,正如这个答案指出的,另一种解决方法是添加一个Web Site Project,它将添加一个没有.csproj文件的项目,该项目“实时”跟踪磁盘上的文件,类似于新.csproj格式在 Visual Studio 中的工作方式2017年。