开发人员技术 | .NET | .NET 运行时
			
			
		
				.NET:基于 .NET 软件框架的 Microsoft 技术。 运行时:运行未编译为机器语言的应用所需的环境。
			
		我有A和B两个项目, A项目是WPF的exe项目,B项目是一个library. 它们都是基于最新的.net 9构建.
我希望在B项目中加入Microsoft.AspNetCore.App的引用,以便做一些asp api server相关的配置,并暴露一个方法给WPF项目使用. WPF在显示主窗口后会启动B项目中api server.
上述的基本框架我已经实现了. 现在遇到管理依赖项的一个问题, 希望可以得到你们的帮助.
在B项目的csproj中,我使用了如下的代码来引入对api server相关的支持.
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="9.0.2">
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
  </ItemGroup>
</Project>
我不希望asp相关的依赖流入到A项目中,导致WPF项目中会看到asp相关的代码(比如能看到Microsoft.AspNetCore命名空间,以及使用asp里相关的类和工具), WPF项目仅仅需要调用自建的函数来启动B项目中的server即可. 所以我使用了PrivateAssets=all来限制依赖项传入wpf项目. 这样做的结果是,WPF项目的编译通过了,但是在运行WPF时,引发了下面的错误.
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.AspNetCore, Version=9.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. 系统找不到指定的文件。
File name: 'Microsoft.AspNetCore, Version=9.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
如果,我在WPF项目中加入下述代码, 则可以让WPF成功启动并运行server. 但是这会导致WPF项目中可以见到asp的相关代码,对后续开发造成干扰.
  <PackageReference Include="Microsoft.AspNetCore.App" Version="9.0.2">
    <PrivateAssets>all</PrivateAssets>
  </PackageReference>
因此, 我阅读了MSDN上的文档来学习如何控制依赖项资产,但是测试了各种IncludeAssets,ExcludeAssets,PrivateAssets的各种组合后,并不能达到我的预期目标:
请帮我指出如何写这两个项目的csproj文件,谢谢!