mar*_*han 5 .net c# msbuild visual-studio
我有一个 .NET 5 WPF 项目,在 csproj 文件中,我有
<ItemGroup>
<ViewModelFiles Include="**\*ViewModel.cs"></ViewModelFiles>
<Content Include="@(ViewModelFiles)">
<DependentUpon>$([System.String]::Copy('%(FileName)').Replace('Model', '.xaml'))</DependentUpon>
</Content>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
但是,每当我将新项目添加到项目中时,IDE 都会自动将一行删除添加到 csproj 文件中。例如,添加Visual\Settings\Control\InputActionViewModel.cs后:
<ItemGroup>
<ViewModelFiles Include="**\*ViewModel.cs"></ViewModelFiles>
<ViewModelFiles Remove="Visual\Settings\Control\InputActionViewModel.cs" />
<Content Include="@(ViewModelFiles)">
<DependentUpon>$([System.String]::Copy('%(FileName)').Replace('Model', '.xaml'))</DependentUpon>
</Content>
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
This is troblesome as I need to make an additional manual operation for every item I created. I would like to know how to swich off this auto generation.
October 25, 2022 Edit
The following is my current code
<ItemGroup>
<Compile Update="**\*ViewModel.cs">
<DependentUpon>$([System.String]::Copy('%(FileName)').Replace('Model', '.xaml'))</DependentUpon>
</Compile>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
小智 -2
我认为这是因为这条线
<ViewModelFiles Include="**\*ViewModel.cs"></ViewModelFiles>
Run Code Online (Sandbox Code Playgroud)
已澄清包括 *ViewModel.cs 文件。而且,您正在使用新的 SDK 项目,添加的项目(文件)将自动包含在项目中。因此,两次,MSBuild 会自动删除名为 *ViewModel.cs 的项目。
如果您测试在添加项目时更改名称,例如 ViewModelXXX.cs 或 ViewXXXModel.cs,则不会添加一行。
如果你测试先添加项目,然后添加这一行
<ViewModelFiles Include="**\*ViewModel.cs"></ViewModelFiles>
Run Code Online (Sandbox Code Playgroud)
也不会添加一行。
| 归档时间: |
|
| 查看次数: |
2474 次 |
| 最近记录: |