我通过在后期构建事件中运行此命令从一个项目生成 NuGet 包。变量 %conf%
被设置为正确的配置(debug 或 release),%1
代表项目名称(例如,“MyCompany.MyProject”)。
nuget pack -Prop Configuration=%conf% "%1.csproj" -exclude *.sql -IncludeReferencedProjects
这个软件包仅供我们自己使用,不会在 nuget 上发布。它只存在于我们的私有代码库中。
在项目中有一个文件被设置为 生成操作: 内容
和拷贝到本地: 总是
。(我的 Visual Studio 是法语版,所以我不能100%确定翻译是否准确)。让我们把它命名为 importantfile.xml
。
在生成的软件包中,最终得到了这样一种结构:
- content
- importantfile.xml
- lib
-net45 (.NetFramework,Version=v4.5)
-MyCompany.MyProject.dll
没问题,我希望importantfile.xml
能够随着程序包一起部署,毕竟这个文件很重要!
当我把程序包安装到另一个项目时,importantfile.xml
会被部署在项目的根目录下。那很好。但它没有设置为copy local: always
。
我需要在安装程序包的这个项目中将importantfile.xml
设置为copy local: always
。
如何实现?
注:
我可以在安装包后立即将copy local: always
设置在文件上,这没什么大不了的。如果以后更新程序包时能保留此属性,我可以接受这种方式,但事实并非如此。更新程序包时,copy local
会被重置为never
(如此处所述)。
项目文件夹中有一个nuspec文件,以下是它的内容:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<copyright>Copyright 2014</copyright>
<tags>some random tags</tags>
</metadata>
</package>