gpt4 book ai didi

c#复制文件到bin目录

转载 作者:行者123 更新时间:2023-11-30 17:31:21 25 4
gpt4 key购买 nike

我可以使用“如果更新则复制”属性将文件放入 bin 目录。

我遇到的问题是我需要将大量的 dll 文件与我的应用程序放在一起。这意味着我的项目中充斥着大量文件。

我想将我的文件放入我的解决方案中的 Assets 文件夹中,但这些文件存在于构建时的 bin 目录中。我曾尝试使用构建后事件,但我不断收到 Windows 错误代码(即使它成功了)。

有没有其他方法可以让我的应用程序访问外部 dll?

最佳答案

如果你unload the project file您可以编辑 .csproj 文件。

接近尾声你会发现:

  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
-->

让我们修改它。

首先定义哪个Items AfterBuild 任务将要复制。请注意,您只需确保这些文件存在于磁盘上的文件夹中(您说它称为 Assets )并且受源代码控制。您不需要在您的解决方案或项目中包含任何这些文件。

  <ItemGroup>
<!-- Include relative to this project file, so ..\assets would bring you to the solution folder
Take all files in the assets folder and subfolders, except *.txt files
-->
<Asset Include="assets\**" Exclude="*.txt">

</Asset>
<!-- take all *.txt files -->
<TextAsset Include="assets\**\*.txt">
<!-- meta data -->
<SubPath>TextFiles</SubPath>
</TextAsset>
</ItemGroup>

现在您将拥有两个 Item 集合,一个称为 Asset,一个称为 TextAsset。这些项目可以在构建中使用 Tasks .我们将使用 Copy任务。我对构建脚本进行了评论以解释会发生什么。

 <!-- this does what the name suggests-->
<Target Name="AfterBuild">
<!-- log -->
<Message Importance="high" Text="Start Copying assets"/>
<!-- copy Asset files to one folder (flattens) -->
<Copy SourceFiles="@(Asset)"
DestinationFolder="$(OutputPath)" />
<!-- copy TextAsset files to a subpath, keep folder structure-->
<Copy SourceFiles="@(TextAsset)"
DestinationFiles="@(TextAsset->'$(OutputPath)%(SubPath)\%(RecursiveDir)%(Filename)%(Extension)')" />
<!-- done logging -->
<Message Importance="high" Text="Copied assets"/>
</Target>

请注意,我使用了属性 $(OutputPath),它是 well known properties 之一. item meta data 存在类似的列表.

这些改动不会影响visual studio的运行。添加或删除常规项目项和/或项目设置时,您的更改将被保留。由于您会将此文件保存在源代码管理中,因此在您的构建服务器上也会运行相同的目标,执行相同的副本。

我更喜欢从命令行测试这些构建目标,只指定我感兴趣的目标,如下所示:

msbuild Application2.csproj /t:AfterBuild

这使您的往返时间更快,而不是进行完整构建。

关于c#复制文件到bin目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48076313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com