如何确定NuGet包二进制文件的行为

问题描述 投票:1回答:2

有这么大的解决方案我的工作,在这里我翻了很多项目进入的NuGet包。将包装在VS.一个单独的解决方案通过.nuproj文件创建

一切工作正常,除了以下:在引导我加载一些目录的MEF能够导入,其完美的工作时,我与原来的项目工作,但现在需要的DLL文件(其中来自包)不要”牛逼使其的Bin \ Debug \ Modules文件夹。

有没有一种方法,使的NuGet其内容复制到模块文件夹? (而不是根路径)

我尝试使用不同类型的子文件夹的包,但没有成功里面。

c# mef nuget-package
2个回答
1
投票

我发现,这个问题最好的解决办法如下:

就拿需要加载的文件,并把他们的内容的文件夹。这可以简单地做:

<ItemGroup>
    <Content Include=" {here go the needed files} " />
</ItemGroup>

内容文件夹只是保存文件,但它并没有将它们复制到输出文件夹上的客户端项目。为了将它们复制到所需的输出,一个.targets文件可以使用,就像下面:

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="CopyToOutput" AfterTargets="Build">
    <ItemGroup>
      <FilesToCopy Include="$(MSBuildThisFileDirectory)..\content\**\*.*"/>    
    </ItemGroup>
    <Copy 
      SourceFiles="@(FilesToCopy)" 
      DestinationFiles="@(FilesToCopy->'$(OutDir)/%(RecursiveDir)%(FileName)%(Extension)')"/>
  </Target>
</Project>

请记住,目标文件名和的NuGet的ID必须是相等的目标文件被添加到项目中。


0
投票

您应该能够使用content/Modules的目标。在content任何目录复制到上构建的bin目录。

如果你试图使用特殊的“基于公约”的文件夹,如lib/net45,这些都是导致安装包时,Visual Studio来自动创建一个装配参考目录。你不应该使用那些常规内容的文件。

更多细节见的documentation

© www.soinside.com 2019 - 2024. All rights reserved.