我们有一个.NET Core .csproj
,使用NuGet gRPC软件包生成C#源代码。问题在于dotnet clean
将删除生成的文件-但是由于某种原因,随后的dotnet publish
将失败(由于缺少生成的文件而导致编译错误)。但是,它仍然会生成文件。 下一个 dotnet publish
将起作用。
有什么方法可以(1)防止在dotnet clean
上删除生成的文件,(2)确保在主C#编译之前生成文件,或者( 3)通过其他方式解决此问题?
.csproj
的相关部分如下:
<Project InitialTargets="ProtoCompiler" DefaultTargets="Build" Sdk="Microsoft.NET.Sdk" ...>
<!-- Protobuf integration; see https://github.com/grpc/grpc/blob/master/src/csharp/BUILD-INTEGRATION.md -->
<Target Name="ProtoCompiler">
<PropertyGroup>
<Protobuf_NoWarnMissingExpected>true</Protobuf_NoWarnMissingExpected>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.7.0" />
<PackageReference Include="Grpc" Version="1.21.0" />
<PackageReference Include="Grpc.Tools" Version="1.21.0" PrivateAssets="All" >
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<Protobuf ProtoRoot = "Source\Protos"
Include = "Source\Protos\*.proto"
OutputDir = "Source\Models\Generated" CompileOutputs="false" />
</ItemGroup>
</Target>
<!-- Compile all source including generated Protobuf -->
<Target Name="Build">
<ItemGroup>
<Compile Include="Source\**\*.cs" />
</ItemGroup>
</Target>
....
我还尝试过使用<Project>
,DefaultTargets
,InitialTargets
和BeforeTargets
,{{1} }和AfterTargets
,我能想到。
使用DependsOnTargets
或dotnet build
或dotnet msbuild
时存在相同的问题。
奇怪的是,使用Visual Studio 2019无法重现该问题(即使用``生成''菜单选项进行构建)。但是,使用Visual Studio for Mac 8,存在相同的问题。