Visual Studio解决方案中的Markdown文档

10

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

输入图片说明

现在有一些问题:

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

我了解到可以创建一个空的C#项目并禁用该项目的构建,但那似乎也是一个hack。

有没有一些推荐的方法来管理Visual Studio中的文档文件?


我有一个关于使用Gimp管理牲畜的问题...我想在Gimp的图层中放置所有奶牛的图片,而不实际将它们保存在.xcf文件中。 - Nyerguds
我在想你是否在使用正确的工具来完成这项工作。你知道像 Git 这样的源代码控制服务可以完美地用于裸文件夹,对吧?你不需要一个解决方案文件。而且,项目文件是你的项目文件表。当然,如果一个文件没有被引用,它就不能存在于项目中;这就是文件的作用。 - Nyerguds
话虽如此,我从未听说解决方案树与文件树不同。您确定正在使用“解决方案资源管理器”,而不是“类视图”吗? - Nyerguds
我知道Visual Studio不是文档工具,但我需要的一切都可以得到。只是有些事情很烦人,但仍然比使用其他工具编辑文件要好。 - Sammy Berg
解决方案文件夹在文件系统中没有被创建。项目中的文件夹会在文件系统中创建,但我尽量不使用.csproj或类似的东西。 - Sammy Berg
显示剩余2条评论
1个回答

4
这个答案中提到,如果你使用新的.csproj项目格式并且除了Visual Studio 2017 15.3+之外还安装了.NET Core 2.0 SDK,那么在Visual Studio 2017中可以使用“链接文件”功能来链接整个目录。请注意,需要保留HTML标签。
<EmbeddedResource Include="..\..\..\docs\**\*.md" LinkBase="docs" />

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

enter image description here

请注意,您也可以在其他MSBuild项目项上使用此功能,例如ContentCompileNone,请保留HTML标记。

项目

从技术上讲,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格式没有提供太多选项。正如您在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所指出的那样,另一种解决方法是添加一个网站项目(Web Site Project),它将添加一个没有.csproj文件的项目,该文件实时跟踪磁盘上的文件,类似于Visual Studio 2017中新的.csproj格式的工作方式。

谢谢,但我想直接将文件添加到解决方案中,而不使用.csproj文件。 - Sammy Berg
请看我的修改。解决方案文件 就是 项目,只不过是不同类型的项目。 - NightOwl888
1
谢谢,这正是我在寻找的。我现在添加了一个“ASP.NET空网站”项目,并删除了所有包含的文件,最终得到了一个没有“属性”和“引用”的空文件夹。 - Sammy Berg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接