【问题标题】:Markdown documentation in Visual Studio SolutionVisual Studio 解决方案中的 Markdown 文档
【发布时间】:2018-02-03 16:43:08
【问题描述】:

我使用 c# 和 Visual Studio 2017 开始了一个新项目。我的目标是管理 Visual Studio 中的文档,将所有文件集中在一个位置,并在 TFS/Git 中提供完整且易于访问的历史记录。
我在src 文件夹中有代码,test 文件夹中有测试项目,docs 文件夹中有 Markdown 文件的文档(我使用Markdown Editor)。根文件夹里还有一个Readme.md:

现在有一些问题:

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

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

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

【问题讨论】:

  • 我有一个关于使用 Gimp 管理牲畜的问题...我想将我所有奶牛的照片放在 Gimp 中的图层中,而不将它们实际保存在 .xcf 文件中
  • @Nyerguds 感谢您的评论。不幸的是,我不明白你想告诉我什么。这是一个问题吗?
  • 我想知道您是否使用了正确的工具来完成这项工作。你知道像 Git 这样的源代码控制服务可以完美地用于裸文件夹,对吧?您不需要为此提供解决方案文件。而且,项目文件是您项目的文件表。当然,一个文件不能存在于项目中而没有被引用;这就是文件的作用。
  • 也就是说,我从未听说过解决方案的树与文件树不同。您确定您使用的是解决方案资源管理器,而不是类视图?
  • 我知道 Visual Studio 不是文档工具,但我需要的一切都可用。只是有些事情很烦人,但仍然比使用其他工具编辑文件要好。

标签: c# visual-studio markdown


【解决方案1】:

与this answer 一样,可以使用Visual Studio 2017 中的链接文件 功能来链接整个目录,前提是您使用的是new .csproj project format除了 Visual Studio 2017 15.3+ 之外,您还安装了 .NET Core 2.0 SDK。

<EmbeddedResource Include="..\..\..\docs\**\*.md" LinkBase="docs" />

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

请注意,除了EmbeddedResource,您还可以在其他MSBuild Project Items 上使用此功能,例如Content、Compile 或None。

项目

从技术上讲,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

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

上述解决方案项“项目”与.csproj 项目之间的唯一区别是后者将控制文件添加到.csproj (MSBuild) 文件的位置。

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

然而,正如this answer 指出的那样,另一种解决方法是添加一个网站项目,这将添加一个没有.csproj 文件的项目,该文件跟踪磁盘上的文件“in实时”,类似于新的 .csproj 格式在 Visual Studio 2017 中的工作方式。

【讨论】:

  • 谢谢,但我想直接在解决方案中添加文件,而不使用 .csproj 文件。
  • 查看我的编辑。解决方案文件是项目,只是类型不同。
  • 谢谢,这正是我想要的。我现在添加了一个“ASP.NET Empty Web Site”项目并删除了所有包含文件,这些文件最终是一个没有“Properties”和“References”的空文件夹。
猜你喜欢
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 2011-02-08
相关资源
最近更新 更多