VS2015 project.json编译排除

时间:2016-12-14 09:22:22

标签: c# visual-studio-2013 visual-studio-2015 project.json

在Visual Studio 2013中,我能够通过使用编译器常量和修改项目的.csproj文件来排除某些.cs文件。

这样的事情:

- myproject.csproj

<PropertyGroup>
  ...
  <DefineConstants>MY_COMPILER_CONSTANT</DevineConstants>
  ...
</PropertyGroup>
<ItemGroup>
  ...
  <Compile Include="myproject\myfile.cs" Condition="'$(Configuration)' != 'MY_COMPILER_CONSTANT'" />
  ...
</ItemGroup>

然后我的项目完全排除了这个myfile.cs被编译,允许我避免一些讨厌的错误。

但现在我正在尝试将我的项目环境迁移到Visual Studio 2015。

我可以很容易地弄清楚如何将编译器常量添加到VS2015项目中,但仍然试图弄清楚如何从编译中排除文件。

我的project.json目前看起来像这样:

{
  "frameworks": {
    "net451": {
      "dependencies": { }
    }
  },
  "dependencies": {
    ...
  },
  "buildOptions": {
    "define": [ "MY_COMPILER_CONSTANT" ]
  }
}

添加文件进行编译似乎很简单。我认为它必须对buildOptions中的“compile”配置变量做一些事情。我需要添加什么才能使编译器在构建时忽略myfile.cs?

2 个答案:

答案 0 :(得分:2)

右键单击Source Explorer中的.cs文件以显示“属性”窗格。在属性窗格中,将“生成”操作更改为“无”。该文件不应编译。

enter image description here

答案 1 :(得分:2)

尝试:buildOptions -> compile -> exclude

例如 - 来自我的project.json - 如何从编译中排除整个lib文件夹:

"buildOptions": {
  "compile": {
    "exclude": [ "lib" ]
  }
}

或来自old docs的其他示例:

"buildOptions": {
    "compile": ["*.cs"],
    "exclude": ["buggy/**/*.cs", "foo/**/*.*"],
    "publishExclude": ["something/**/*.*"],
    "resource": ["embed/**/*.*"]
}


有关详细信息,请查看project.json reference

注意

.NET Core工具将在未来版本中从project.json转移到基于MSBuild的项目。

建议仍然将project.json文件用于新的.NET Core项目,因为在发布工具时会有一个将项目转换为MSBuild的路径。

有关详细信息,请参阅.NET博客上的Changes to project.json帖子和Using MSBuild to build .NET Core projects主题。