.NET Core(非ASP.NET Core)项目的文件可以嵌套在 VS2017 Solution Explorer 中吗?
Can files be nested in VS2017 Solution Explorer for .NET Core (non-ASP.NET Core) projects?
在 "old school" MSBuild 项目中 - 例如 VS2017 中的 Windows Forms 仍在使用 - 文件可以是 "nested" 通过 csproj 文件中的 DependentUpon
项目。
我用它在 Noda Time 中将单元测试组合在一起,例如
<Compile Include="LocalDateTest.PeriodArithmetic.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
这导致了易于导航的测试:
我在为 .NET Core 迁移到 project.json
时有意 "lost" 此功能,但希望在转换为 MSBuild 时它会 return。但是,看起来基于 .NET Core SDK(根元素 <Project Sdk="Microsoft.NET.Sdk">
)的 MSBuild 项目在 Visual Studio 2017 中没有得到相同的处理,即使手动添加 ItemGroup
与 "old school" 项目相同的元素。
ASP.NET 核心项目接收缩小 CSS 和 Javascript 的自动嵌套,但不清楚如何将其应用于 .NET Core 库项目中的 C#。
我让它在我的一个 Microsoft.NET.Sdk
风格的项目中使用类似于以下的东西:
<ItemGroup>
<Compile Update="LocalDateTest.*.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
</ItemGroup>
这里的技巧是使用 Update
而不是 Include
。这是因为隐式项目来自在主项目之前导入的 props 文件。额外的 Include
不会影响已经包含的文件,但可以使用 Update
.
修改它们
如果您使用相同的前缀,它将自动嵌套文件。
示例:
AsemblyInfo.cs
AsemblyInfo.local.cs
如果您使用 .netstandardx.x,则不能使用 NestedIn。没用。
您可以在 .csproj 中手动执行此操作
<ItemGroup><Compile Include="BaseClass">ChildClass.cs</Compile></ItemGroup>
在 Visual Studio 2019 年,我有一个 .NET Core 2.2 <Project Sdk="Microsoft.NET.Sdk">
项目,我想要在其中嵌套良好的 appsettings.json / appsettings.Development.json 文件,就像它们一样为 <Project Sdk="Microsoft.NET.Sdk.Web">
个项目自动执行。
这是我必须添加到 .CSPROJ 中的内容:
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="appsettings.Development.json">
<DependentUpon>appsettings.json</DependentUpon>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
之后,我必须 unload/reload 项目才能使更改在解决方案资源管理器中生效。请注意,我还将这些文件设置为始终复制到输出目录。
如果您想使用通配符而不是手工制作每个条目,将这些行添加到您的 .csproj 文件意味着 Foo.tests.cs 自动嵌套在 Foo.cs
下
在 VS2019 中测试并使用 .NET Core 3.1.0
<ItemGroup>
<Compile Update="**\*.tests.cs">
<DependentUpon>$([System.String]::Copy(%(Filename)).Replace(".tests",".cs"))</DependentUpon>
</Compile>
</ItemGroup>
在 "old school" MSBuild 项目中 - 例如 VS2017 中的 Windows Forms 仍在使用 - 文件可以是 "nested" 通过 csproj 文件中的 DependentUpon
项目。
我用它在 Noda Time 中将单元测试组合在一起,例如
<Compile Include="LocalDateTest.PeriodArithmetic.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
这导致了易于导航的测试:
我在为 .NET Core 迁移到 project.json
时有意 "lost" 此功能,但希望在转换为 MSBuild 时它会 return。但是,看起来基于 .NET Core SDK(根元素 <Project Sdk="Microsoft.NET.Sdk">
)的 MSBuild 项目在 Visual Studio 2017 中没有得到相同的处理,即使手动添加 ItemGroup
与 "old school" 项目相同的元素。
ASP.NET 核心项目接收缩小 CSS 和 Javascript 的自动嵌套,但不清楚如何将其应用于 .NET Core 库项目中的 C#。
我让它在我的一个 Microsoft.NET.Sdk
风格的项目中使用类似于以下的东西:
<ItemGroup>
<Compile Update="LocalDateTest.*.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
</ItemGroup>
这里的技巧是使用 Update
而不是 Include
。这是因为隐式项目来自在主项目之前导入的 props 文件。额外的 Include
不会影响已经包含的文件,但可以使用 Update
.
如果您使用相同的前缀,它将自动嵌套文件。
示例:
AsemblyInfo.cs
AsemblyInfo.local.cs
如果您使用 .netstandardx.x,则不能使用 NestedIn。没用。
您可以在 .csproj 中手动执行此操作
<ItemGroup><Compile Include="BaseClass">ChildClass.cs</Compile></ItemGroup>
在 Visual Studio 2019 年,我有一个 .NET Core 2.2 <Project Sdk="Microsoft.NET.Sdk">
项目,我想要在其中嵌套良好的 appsettings.json / appsettings.Development.json 文件,就像它们一样为 <Project Sdk="Microsoft.NET.Sdk.Web">
个项目自动执行。
这是我必须添加到 .CSPROJ 中的内容:
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="appsettings.Development.json">
<DependentUpon>appsettings.json</DependentUpon>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
之后,我必须 unload/reload 项目才能使更改在解决方案资源管理器中生效。请注意,我还将这些文件设置为始终复制到输出目录。
如果您想使用通配符而不是手工制作每个条目,将这些行添加到您的 .csproj 文件意味着 Foo.tests.cs 自动嵌套在 Foo.cs
下在 VS2019 中测试并使用 .NET Core 3.1.0
<ItemGroup>
<Compile Update="**\*.tests.cs">
<DependentUpon>$([System.String]::Copy(%(Filename)).Replace(".tests",".cs"))</DependentUpon>
</Compile>
</ItemGroup>