【问题标题】:How to publish additional files into bin folder如何将其他文件发布到 bin 文件夹中
【发布时间】:2018-09-19 15:38:51
【问题描述】:

我的 .net Web 应用程序项目还包括一些非托管 dll 作为附加文件。 这些是子文件夹深处的几个级别。

当我发布这个项目时,我需要将这些文件与所有其他二进制文件一起复制到 bin 文件夹中。

无论我尝试什么设置,我能得到的最好的结果就是将它们发布到他们现有的文件夹结构中,这不是我需要的位置。

我创建了一个 PostBuild 事件来复制文件,这在本地构建时有效,但在发布到服务器时无效。我无法让 PostPublish 事件以相同的方式工作。

还有其他方法可以实现吗?

请注意,这与上一个问题相似但不同: Publish unmanaged DLL from referenced project

【问题讨论】:

标签: c# asp.net visual-studio


【解决方案1】:

尝试使用发布后任务。

您可以创建一个项目组进行复制:

<ItemGroup>
  <binFilesToCopy Include="$(OutDir)\somepath\to\yourexternalDLLFolder\*" />
  <!-- Add more folders/files you want to copy here -->
</ItemGroup>

然后在发布后添加一个目标:

<Target Name="AfterPublish">
    <Copy SourceFiles ="@(binFilesToCopy)" DestinationFolder ="$(OutDir)\bin" />
</Target>

我主要是从记忆中完成的,所以仔细检查语法,但让你明白。

【讨论】:

    【解决方案2】:

    我有类似的设置。我的解决方案中有 2 个项目,一个是 .NET Core,另一个是 C++。当我要发布 dotnetcoreapp2.2 时,我想包含来自其他项目的预编译 C++ DLL。 @JuanR 的答案对我不起作用,尽管它已经非常接近我的版本。看起来&lt;ItemGroup&gt; 需要在&lt;Target&gt; 标记中。

    <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
      <ItemGroup>
        <DataModelFiles Include="$(ProjectDir)..\MyCppProject\bin\Release\MyCppProject.dll" />
      </ItemGroup>
      <Copy SourceFiles="@(DataModelFiles)" DestinationFolder="$(PublishDir)" SkipUnchangedFiles="false" />
    </Target>
    

    【讨论】:

    • 像冠军一样工作。通过添加 有很大的灵活性。我有全局 .json 文件,现在可以在构建和发布时复制这些文件。我还有只在本地运行时适用的开发文件和机密文件。
    【解决方案3】:

    在文件的属性中你可以将Copy to output directory设置为Copy always或者你可以编辑解决方案文件,展开所需文件的xml标签并添加&lt;CopyToOutputDirectory&gt;Always&lt;/CopyToOutputDirectory&gt;作为子标签。

    【讨论】:

    • 不幸的是,这会将整个文件夹结构复制到 bin 文件夹中,我只需要文件本身位于 bin 的根目录中而不是任何子文件夹中
    • @userSteve 是否可以将文件放在解决方案的根目录中
    • 这并不理想。我有 12 个文件,将它们放在项目的根目录中会相当混乱。他们现在所在的文件夹结构很整洁,并解释了它们的用途
    • @userSteve 我不知道有其他方法可以做到这一点,这对于远程构建来说很可靠
    • @userSteve:不一定。有复制文件的内置任务,不需要 bat 文件。您应该能够将 bin 文件夹用作目标。
    猜你喜欢
    • 2012-09-10
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 2021-01-04
    相关资源
    最近更新 更多