Cia*_*tic 9 msbuild csproj .net-core
我正在尝试在.NET核心csproj应用程序中使用PhantomJS NuGet包.但我认为使用PackageReferenceNuGet的新语法是不可能的.
当我像这样引用PhantomJS包时:
<PackageReference Include="PhantomJS" Version="2.1.1">
<IncludeAssets>all</IncludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)
我跑的时候什么也没做dotnet build.
我希望它将PhantomJS包中的文件复制到输出目录(或项目中的任何位置),这样我就可以使用PhantomJS包提供的二进制文件.
有没有其他方法将PhantomJS NuGet包的内容复制到MSBuild的输出目录?
我想你想使用:
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
Run Code Online (Sandbox Code Playgroud)
在 main 中<PropertyGroup>,这会导致所有依赖项被复制到输出文件夹。这意味着每个依赖项都会被复制,因此在某些情况下这可能会非常混乱。
如果您想排除特定的程序集或包:
<ItemGroup>
<-- won't copy to output folder -->
<PackageReference Include="MahApps.Metro" version="1.6.5">
<IncludeAssets>compile</IncludeAssets>
</PackageReference>
<PackageReference Include="Dragablz" version="0.0.3.203">
<IncludeAssets>compile</IncludeAssets>
</PackageReference>
...
<-- normal will copy to output folder -->
<PackageReference Include="xmlrpcnet" version="3.0.0.266" />
<PackageReference Include="YamlDotNet" version="6.0.0" />
</ItemGroup>
<ItemGroup>
<!-- keep assembly reference from copying to output -->
<Reference Include="$(SolutionDir)MarkdownMonster\bin\$(Configuration)\$(TargetFramework)\MarkdownMonster.exe">
<Private>false</Private>
</Reference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
compile 在这种情况下意味着它们可用于编译,但不会复制到输出文件夹。
小智 6
有两种解决方案:
<ItemGroup>
<PackageReference Include="PhantomJS" Version="1.0.8" GeneratePathProperty="true" />
</ItemGroup>
<Target Name="CopyPdfExe" AfterTargets="Build">
<Copy SourceFiles="(PkgPhantomJS)\tools\phantomjs\phantomjs.exe" DestinationFolder="$(OutDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
<ItemGroup>
<PackageReference Include="PhantomJS" Version="1.0.8" GeneratePathProperty="true" />
</ItemGroup>
<ItemGroup>
<None Include="$(PkgPhantomJS)\tools\phantomjs\phantomjs.exe" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
更喜欢 #2 因为如果这个项目被另一个项目引用,.exe 也可以复制到输出文件夹
NuGet 中的语法<PackageReference>使用传递依赖项,就像project.json语法一样。因此,适用相同的规则。请参阅此NuGet v3packages.config ,其中讨论了新语法中哪些内容有效,哪些无效。具体来说
您不能依赖 install.ps1 或 uninstall.ps1 来运行。这些文件将在使用packages.config时执行,但在v3中将被忽略。所以你的包需要在它们不运行的情况下可用。Init.ps1 仍将在 NuGet 3 上运行。
要将文件复制到输出目录,PhantomJS需要更改 NuGet 包以使用contentFiles。
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |