Nuget - 对子文件夹中的内容设置 CopyToOutputDirectory

2024-03-13

我是 Nuget 新手,我正在尝试上传我的第一个包。到目前为止,一切都很顺利。但是,我尝试在一些我想要存放在 Lib 子文件夹中的内容文件上设置 CopyToOutputDirectory。我的目录如下所示:

│   Readme.txt
│   MyPackage.nupkg
│   MyPackage.nuspec
│
├───content
│   └───Lib
│           native1.dll
│           native2.dll
│           native3.dll
│           native4.dll
│
├───lib
│       MyActualAssembly.dll
│
└───tools
        Install.ps1

来自阅读这个 StackOverflow 问题 https://stackoverflow.com/questions/8474253/nuget-how-can-i-change-property-of-files-with-install-ps1-file和一些额外的阅读,我整理了一个 Install.ps1,如下所示:

param($installPath, $toolsPath, $package, $project)

$project.ProjectItems.Item("Lib\native1.dll").Properties.Item("CopyToOutputDirectory").Value = 1
$project.ProjectItems.Item("Lib\native2.dll").Properties.Item("CopyToOutputDirectory").Value = 1
$project.ProjectItems.Item("Lib\native3.dll").Properties.Item("CopyToOutputDirectory").Value = 1
$project.ProjectItems.Item("Lib\native4.dll").Properties.Item("CopyToOutputDirectory").Value = 1

我排列了各种操作,看看它是否有助于我理解问题,但它实际上与其他答案相同。

根据我的测试,Install.ps1 在查找文件本身时遇到一些问题。安装包后运行时,出现以下错误:

Exception calling "Item" with "1" argument(s): "The parameter is incorrect. (Exception from HRESULT: 0x80070057 
(E_INVALIDARG))"
At C:\...\tools\Install.ps1:3 char:1
+ $project.ProjectItems.Item("Lib\native1.dll").Properties.Item("CopyToOutputDirect ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation

Exception calling "Item" with "1" argument(s): "The parameter is incorrect. (Exception from HRESULT: 0x80070057 
(E_INVALIDARG))"
At C:\...\tools\Install.ps1:4 char:1
+ $project.ProjectItems.Item("Lib\native2.dll").Properties.Item("Copy ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation

Exception calling "Item" with "1" argument(s): "The parameter is incorrect. (Exception from HRESULT: 0x80070057 
(E_INVALIDARG))"
At C:\...\tools\Install.ps1:5 char:1
+ $project.ProjectItems.Item("Lib\native3.dll").Properties.Item("CopyToOutputDirec ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation

Exception calling "Item" with "1" argument(s): "The parameter is incorrect. (Exception from HRESULT: 0x80070057 
(E_INVALIDARG))"
At C:\...\tools\Install.ps1:6 char:1
+ $project.ProjectItems.Item("Lib\native4.dll").Properties.Item("CopyToOut ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation

而且,正如您所期望的,所有文件的 CopyToOutputDirectory 设置均设置为“不复制”(默认值)。

我该如何解决这个问题?访问 ps 脚本中的子文件夹是否有不同的语法?或者我完全没有理解这些错误消息的要点吗?


请尝试以下方法:

$project.ProjectItems.Item("Lib").ProjectItems.Item("native1.dll").Properties.Item("CopyToOutputDirectory").Value = 1

我可能是错的,但我不认为 ProjectItems 会允许您找到不是当前项目的直接子项的项目。因此,您需要首先找到 Lib 文件夹项目项,然后在该项目项中查找您的 dll。

为了测试这些,我通常打开包管理器控制台窗口,确保在默认项目下拉列表中选择正确的项目,然后使用命令行访问项目对象:

$project = 获取项目

这为您提供了与 NuGet 安装脚本相同的功能,即项目的 Visual Studio 对象模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nuget - 对子文件夹中的内容设置 CopyToOutputDirectory 的相关文章

随机推荐

  • Rstudio 速度慢得令人痛苦

    突然间 Rstudio 慢得令人痛苦 现在无法使用 这意味着 我打开它 如果我输入任何内容 就会有几秒钟的延迟 我已经探索了我能想到的所有选项 1 重新安装 R 和 Rstudio 尽管我不能 100 确定我可以删除所有组件 2 尝试重置设
  • if 语句不起作用?

    我用调试器看了又看 似乎无法弄清楚为什么 IF 语句总是打印消息 IF 语句检查是否 yesno Y or N 但无论我输入 y 或 Y 或 n N 或 H B 它都会显示 我不知道该采取什么行动了 我似乎找不到哪里出了问题 if yesn
  • Neo4j cypher - 导入 CSV 并根据 csv 值添加节点之间的关系

    是否可以在 cypher 中使用导入功能根据 csv 的值在节点之间创建不同的关系 例如 对于给定的 csv 数据 product id user id action 1 1 VIEW 1 2 PURCHASE 我需要创建产品节点 prod
  • 在 MySQL 中插入/更新随机日期

    如何使用 MySQL 更新过去 2 周内随机日期的列 例如 代码实际上不起作用 UPDATE mytable SET col sysdate rand 1 14 您可以使用以下表达式获得一个随机整数 获取随机整数R 范围 i FLOOR i
  • 检查 Oracle 数据库有多少年了?

    因此 我们有一个生产数据库的经过处理的版本的镜像 无论如何 您知道 是否可以查明数据库的年龄 即当数据库放置在 Oracle 服务器上时 谢谢你的帮助 选择从 dba users 创建 其中用户名 SYS 在我的网站上有 16 秒的差异 从
  • 如何在Spark 1.6集群上运行用Spark 2.1组装的Spark应用程序?

    有人告诉我 我可以使用 Spark 的一个版本构建 Spark 应用程序 只要我使用sbt assembly为了构建它 我可以在任何 Spark 集群上使用 Spark Submit 运行它 因此 我使用 Spark 2 1 1 构建了简单
  • 为什么 Base64.decode 为不同的字符串生成相同的字节数组?

    我使用 URL 安全 Base64 编码来对随机生成的字节数组进行编码 但我在解码时遇到问题 当我解码两个不同的字符串 除了最后一个字符之外的所有字符都是相同的 时 它会生成相同的字节数组 例如 对于两者 dGVzdCBzdHJpbmr a
  • C# 3.0 自动属性 ​​- 是否可以添加自定义行为?

    我想知道是否有任何方法可以将自定义行为添加到自动属性获取 设置方法中 我能想到的一个明显的例子是希望每个设置属性方法都可以调用任何PropertyChanged事件处理程序作为System ComponentModel INotifyPro
  • 用户在 Python 中输入后出现“NameError:name ''未定义”[重复]

    这个问题在这里已经有答案了 我完全不明白为什么这不起作用 应该可以精确地工作 对吗 UserName input Please enter your name print Hello Mr UserName raw input
  • 设置限制的 PayloadTooLargeError

    您好 我在 Express js 方面遇到问题 我需要将 base64 文件发送到 node js 我的 configuraizone 如下所示 但是当我发送文件时 出现此错误 PayloadTooLargeError 请求实体太大 我读过
  • 现有命名空间类型的使用声明与创建类型别名

    这不是关于两者之间差异的问题using and typedef用于创建类型别名 我想提供从代码块或函数内的命名空间对现有类型的访问 我发现了两种不同的方法 我可以使用 using 声明 包含 该类型 using typename mynam
  • 如何使用 angular.js 在 DOM 中移动视图?

    如何使用 Angular JS 将元素移动到 DOM 中的不同位置 我有一个像这样的元素列表 ul li div content div li li div content div li li div content div li li d
  • 不带 http://www 的 url 正则表达式 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要一个 url 正则表达式来验证
  • 同时进行语音转文本和文本转语音

    介绍 我正在开发一个应用程序 我需要在其中使用 Booth SpeechRecognizer 和 TTS 但我在尝试这个时遇到了一些问题 主要的一个问题是 如果我初始化 TTS SpeechRecgonizer 似乎无法工作 而如果我禁用
  • PHP 在 foreach 循环中包含文件

    我这样做可以吗 foreach item as val include external script php 外部脚本大约有 800 行代码 出于组织原因 我希望将其分开 亲切 我想你最好为此使用一个函数 包含文件需要读取 解析和解释该文
  • React 将导入名称作为 prop 传递并添加到图像 src

    我有一个反应组件 它有一个带有包含图像路径的导入名称的道具 在这种情况下 道具值为Ico1 我需要像这样在 img src 中传递 prop 代码如下 import React from react import Ico1 from ico
  • 双精度接受逗号而不是点

    我无法从 bash 终端在程序中输入双精度值 下面是我用来弄清楚为什么会发生这种情况的代码 这是我的测试代码 import java util public class DoubleTest public static void main
  • django:从 django 模板调用重写的模型方法

    我已经超越了 被覆盖 the get FOO display django模型类的方法 参见 doc参考 https docs djangoproject com en 1 10 ref models instances django db
  • 哪些 int 值与 C 中的 exit() 相关?

    On 教程点 com http www tutorialspoint com c standard library c function exit htm 退出时传递值0 而人们经常通过它1 我什至见过exit 3 不同的值意味着什么 唯一
  • Nuget - 对子文件夹中的内容设置 CopyToOutputDirectory

    我是 Nuget 新手 我正在尝试上传我的第一个包 到目前为止 一切都很顺利 但是 我尝试在一些我想要存放在 Lib 子文件夹中的内容文件上设置 CopyToOutputDirectory 我的目录如下所示 Readme txt MyPac