Visual Studio的语言无关项目类型?

时间:2014-02-28 20:13:00

标签: visual-studio-2012 msbuild visual-studio-2013 project

我正在编写一段代码,它只是一堆JavaScript和JSON文件 - 它是一个grunt插件,而不是一个网站 - 我想编辑文件并通过以下方式管理源代码管理Visual Studio。

我正在尝试构建一个'vanilla'msbuild项目文件 - 而不是C#,而不是VB等,因为这些文件在这种文件中无效。我可以编写一个带有.msbuildproj扩展名的非常简单的MSBuild文件,但无法将其加载到VS2013中,并且无法在任何地方找到示例。

任何人都知道如何将一个空的,独立于语言的项目放在一起,只是为了文件管理?

2 个答案:

答案 0 :(得分:1)

你大多是对的:

  • Visual Studio项目(几乎所有现代类型)都是MSBuild项目。但是,Visual Studio仅加载具有扩展的项目。您无法加载任意MSBuild项目。 (当然,您始终可以将MSBuild文件编辑为XML。如果已将其作为项目加载,则必须先将其卸载以进行编辑。)

  • 对于某些项目类型,您无法添加您喜欢的任何类型的文件。例如,WiX项目不允许您添加T4模板(.tt)文件。真遗憾。但是,您可以编辑项目以添加它们,这不应该破坏任何内容。但这完全取决于项目类型扩展的作者。尽管如此,我还没有找到任何我无法添加到C#和Visual Basic .NET项目的文件。

正如SLaks评论的那样,网站项目确实允许添加任何类型的文件,并且应该适用于您的案例。

答案 1 :(得分:1)

我找到了相同的msbuildproj扩展,并希望做类似的事情。我现在不关心在VS中实际构建。我只想在一些文件夹中包含所有文件,以减轻解决方案文件夹的缺点。经过一番搜索,我找到了this帖子。有了VS2017并且正在使用为.NET Core项目引入的新的MSBuild项目格式,我能够使以下内容为我工作。

<Project Sdk="Microsoft.NET.Sdk">
  <ItemGroup>
    <Content Include="*" />
    <!-- Use "**" for all sub-folders -->
    <!--<Content Include="**" />-->
  </ItemGroup>

  <!-- A temporary solution, import C# Visual Studio design time targets in order to be able to load the project in Visual Studio -->
  <PropertyGroup>
    <CSharpDesignTimeTargetsPath Condition="'$(CSharpDesignTimeTargetsPath)'==''">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets</CSharpDesignTimeTargetsPath>
  </PropertyGroup>
  <Import Project="$(CSharpDesignTimeTargetsPath)" Condition="'$(CSharpDesignTimeTargetsPath)' != '' and Exists('$(CSharpDesignTimeTargetsPath)')" />
</Project>