【问题标题】:Copy all dll files which are built from other projects to assets将从其他项目构建的所有 dll 文件复制到资产
【发布时间】:2022-12-16 20:50:11
【问题描述】:

我想让从其他项目构建的 dll 文件成为 Xamarin Android 项目中的资产文件。

例如,我有一个“A”项目,它是一个 Xamarin Android 项目。

我有B和C项目,它们将被构建并生成dll文件。

B 和 C 完成构建过程后,我希望将他们的 dll 文件复制到“A”项目的资产文件夹,并将这些 dll 文件作为 android 资产。

有什么办法可以达到这个要求吗? 谢谢!

【问题讨论】:

  • 为什么?这有什么用?
  • @Jason 因为我的应用程序已经在 Windows 和 Linux 上运行。在我的应用程序的基本代码中,它将使用Assembly.LoadFrom("path") 来加载其他程序集。如果可能的话,我希望它在 Android 上具有相同的行为。

标签: xamarin xamarin.forms xamarin.android


【解决方案1】:

我找到了解决办法。

对于 B 和 C 项目,应将它们添加到构建后事件中,例如:

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="xcopy /q /y &quot;$(TargetDir)$(AssemblyName).dll&quot; &quot;$(SolutionDir)AAssets&quot;" />
</Target>

并且还需要在PropertyGroup中添加&lt;DisableFastUpToDateCheck&gt;true&lt;/DisableFastUpToDateCheck&gt;

然后在B和C完成构建后,他们的dll文件将被复制到A的assets文件夹中。

而在A项目中,还应该添加post build event和assets文件夹的设置。

<ItemGroup>
  <!-- I use Avalonia here. Change to AndroidAsset in Maui or Xamarin-->
  <AvaloniaResource Include="Assets**" />
</ItemGroup>
.
.
.
<Target Name="PostBuild" BeforeTargets="PostBuildEvent">
  <Exec Command="del &quot;$(ProjectDir)Assets*.dll&quot; /q" />
</Target>

生成后事件将在生成完成后删除 dll 文件。

【讨论】:

    猜你喜欢
    • 2016-02-27
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2011-11-19
    • 2014-09-10
    • 1970-01-01
    相关资源
    最近更新 更多