You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将其他项目生成的DLL文件复制到Xamarin Android项目的Assets目录?

实现Xamarin Android项目自动复制依赖项目DLL到Assets文件夹

下面提供几种可行的方案,按自动化程度从高到低排序:

方案1:通过MSBuild任务自动复制(推荐)

直接修改Xamarin Android项目A的.csproj文件,添加编译后自动复制的任务,确保项目B、C先完成编译,再将它们的DLL复制到A的Assets目录,并标记为Android资源。

操作步骤:

  1. 在Visual Studio中右键项目A,选择「卸载项目」,然后右键点击卸载后的项目,选择「编辑项目A.csproj」。
  2. 在文件末尾的</Project>标签之前,添加以下MSBuild代码:
<Target Name="CopyDllsToAssets" AfterTargets="Build" DependsOnTargets="BuildDependencies">
  <!-- 先编译项目B和C -->
  <MSBuild Projects="..\ProjectB\ProjectB.csproj" Targets="Build" Properties="Configuration=$(Configuration)" />
  <MSBuild Projects="..\ProjectC\ProjectC.csproj" Targets="Build" Properties="Configuration=$(Configuration)" />
  
  <!-- 复制项目B的DLL到Assets文件夹 -->
  <Copy 
    SourceFiles="..\ProjectB\bin\$(Configuration)\netstandard2.0\ProjectB.dll" 
    DestinationFiles="$(ProjectDir)Assets\ProjectB.dll" 
    OverwriteReadOnlyFiles="true" 
    SkipUnchangedFiles="true" />
  
  <!-- 复制项目C的DLL到Assets文件夹 -->
  <Copy 
    SourceFiles="..\ProjectC\bin\$(Configuration)\netstandard2.0\ProjectC.dll" 
    DestinationFiles="$(ProjectDir)Assets\ProjectC.dll" 
    OverwriteReadOnlyFiles="true" 
    SkipUnchangedFiles="true" />
</Target>

<!-- 标记DLL为AndroidAsset -->
<ItemGroup>
  <AndroidAsset Include="Assets\ProjectB.dll" />
  <AndroidAsset Include="Assets\ProjectC.dll" />
</ItemGroup>
  • 注意:请根据你的实际项目路径、目标框架(比如netstandard2.0可能需要替换为项目B/C的输出框架)调整路径。
  • $(Configuration)会自动匹配当前的编译配置(Debug/Release),确保复制对应版本的DLL。

方案2:Post-build命令行复制

通过项目A的后期生成事件,在编译完成后执行复制命令,前提是已将项目A设置为依赖项目B、C(确保编译A时先编译B、C)。

操作步骤:

  1. 右键项目A → 「属性」→ 「生成事件」→ 「后期生成事件命令行」。
  2. 输入以下命令(替换为你的实际项目路径):
copy "$(SolutionDir)ProjectB\bin\$(Configuration)\ProjectB.dll" "$(ProjectDir)Assets\" /Y
copy "$(SolutionDir)ProjectC\bin\$(Configuration)\ProjectC.dll" "$(ProjectDir)Assets\" /Y
  • /Y参数表示覆盖已存在的文件,无需确认。
  1. 回到项目A的Assets文件夹,选中复制过来的DLL文件,在属性窗口设置:
    • 生成操作:AndroidAsset
    • 复制到输出目录:如果较新则复制

方案3:手动添加+自动更新

如果不想修改项目文件或命令行,可以手动操作,配合项目引用确保DLL始终最新:

  1. 先编译项目B和C,找到它们的DLL文件(通常在bin\Debug或bin\Release目录下)。
  2. 将DLL复制到项目A的Assets文件夹中。
  3. 在Visual Studio中,选中Assets里的DLL文件,在属性窗口设置:
    • 生成操作:AndroidAsset
    • 复制到输出目录:如果较新则复制
  4. 给项目A添加对项目B、C的项目引用(右键项目A → 「添加」→ 「引用」→ 选中B、C)。这样每次编译A时,会先编译B、C,确保你手动复制的DLL可以随时更新为最新版本。

内容的提问来源于stack exchange,提问作者CYL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:05:50