如何在单个发布配置文件中包含两个项目并确保依赖项完整
解决Project A发布时包含Project B完整依赖的方法
调整项目引用属性
右键Project A里的Project B引用,打开「属性」,把「复制本地」设为True。这样Project B的主程序和它直接依赖的DLL会自动复制到Project A的输出目录。要是Project B还有间接依赖(比如NuGet包的DLL),得确保这些依赖在Project B里也把「复制本地」设为True。.NET Core/.NET 5+专属配置
直接修改Project A的.csproj文件,添加这段配置:<ItemGroup> <ProjectReference Include="..\ProjectB\ProjectB.csproj"> <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> </ProjectReference> </ItemGroup>这段配置会强制把Project B的所有锁定文件依赖(包括NuGet包的DLL)都复制到输出目录。
用发布配置文件兜底
打开Project A的发布设置,进入「文件发布选项」,勾选「包含所有项目引用的内容文件」。如果是.NET Framework项目,还能在发布配置文件的.pubxml里加这段代码:<PropertyGroup> <CopyAllFilesToSingleFolderForPackageDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForPackageDependsOn); </CopyAllFilesToSingleFolderForPackageDependsOn> </PropertyGroup> <Target Name="CustomCollectFiles"> <ItemGroup> <_CustomFiles Include="..\ProjectB\bin\$(Configuration)\**\*.*" /> <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> </FilesForPackagingFromProject> </ItemGroup> </Target>这个自定义目标会把Project B输出目录下的所有文件都拷贝到Project A的发布目录里。
内容的提问来源于stack exchange,提问作者Marvin Klein
相关产品推荐
相关产品推荐

