Exception message and full stack trace
No exception. Compile-time issue on the generated client project (details in the steps below).
Steps to reproduce the issue
Context
-------
Modular monolith (not microservices), ABP Commercial 10.6.0, .NET 10, ABP CLI 3.1.1.
Two applications, AppA and AppB, versioned and deployed independently.
AppA.HttpApi.Client is published to a private NuGet feed and consumed by AppB.
AppA.Application.Contracts is NOT published: our CI only packages HttpApi.Client.
What we want
------------
AppA exposes 2 integration services. We want AppA.HttpApi.Client to be self-contained,
so that AppB can consume those contracts without referencing AppA.Application.Contracts.
Steps
-----
1. In AppA, declare the integration services with [IntegrationService] and set
options.ExposeIntegrationServices = true in ConfigureConventionalControllers().
They live in business namespaces, e.g. MyApp.Param_Ops.Ops.Numbers.
2. Start the host and run:
abp generate-proxy -t csharp -u https://localhost:44314/ -m app -st integration
3. The 2 integration service interfaces and their client proxies are generated - correct.
But the generated DTOs are not the transitive closure of those interfaces: out of 723
exposed types, 73 are generated, matching exactly the namespaces (and sub-namespaces)
of the 2 integration service controllers, whether or not they are reachable from the
integration service signatures.
4. As a result, application DTOs that merely share the namespace are generated too (e.g.
NumberWithRioDto), and they reference types from OTHER namespaces (e.g. CountryDto in
Params.Countries) which are not generated. Building the client project standalone
fails with 34 errors:
error CS0234: The type or namespace name 'CountryDto' does not exist in the namespace
'MyApp.Param_Ops.Params.Countries'
Keeping a ProjectReference to Application.Contracts makes it compile, but every DTO
then exists twice (generated file + imported type), producing 101 CS0436 warnings, and
dotnet pack declares a NuGet dependency on a package we do not publish (NU1101 for the
consumer). --without-contracts requires that same contracts package, which is exactly
the coupling we are trying to avoid.
Question
--------
What is the recommended way to obtain a self-contained HttpApi.Client package exposing
only the integration service contracts, for applications that are packaged and deployed
independently?
We got it to work by moving the integration services and their dedicated *IntegrationDto
types into a separate namespace, but shared enums (StatusNumber, NumberType, ...) live in
AppA.Domain.Shared under the application namespaces, are used across the whole
application, and therefore are not generated. We had to duplicate them into the
integration namespace, which we would rather avoid since it creates two declarations of a
single business concept with no build-time protection against divergence.
Is that the expected approach, or is there a supported way to have the generator emit the
types a contract actually depends on, even when they belong to another namespace?