2015-04-23 69 views
10

我想用单个文件创建nuget包。有没有办法打包单个文件,然后指示文件应该放在Visual Studio项目中的位置?使用nuget包部署单个文件

我能够制作一个nuspec文件并打包一个包含相关文件的nuget包。但是,不能将其安装在包装内。

更具体地说:我有一个配置文件应该在许多项目中是相同的。我希望能够安装nuget包,可以安装它们以将配置文件放置在正确的位置。

nuspec文件现在只是指定有关元数据的基础知识。然后,我在该目录中运行带有nuspec文件和配置文件的nuget pack。这会产生一个nuget包,其中包含配置文件,它可以卸载。

这是我在现在的NuGet包:

enter image description here

和nuspec文件:

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata> 
    <id>StyleCopSettings</id> 
    <version>1.0.1</version> 
    <title>StyleCopSettings</title> 
    <authors>Clearspan</authors> 
    <owners>Clearspan</owners> 
    <description>StyleCopSettings</description> 
    </metadata> 
</package> 
+0

请发布nuspec文件。没有明确的问题陈述和足够的代码来重现和解决问题的问题会被解决 - 实际上这是一个关于这件事情的密切原因。您是否可以部署文件没有问题 - 这就是nuget软件包按照定义进行的操作。要么你没有在你的nuspec中指定一个目标路径,或者路径是错误的。 –

+0

@PanagiotisKanavos谢谢你让我知道。我添加了可用的额外信息。 – Jake

+0

请发布** nuspec **文件的内容。 * *是nuget软件包构建的定义。检查[文档](https://docs.nuget.org/create/creating-and-publishing-a-package),'file'元素的'target'属性的值是多少? –

回答

6

的问题是,你是不是引用在有问题的文件你nuspec。我已经编辑了你的nuspec如下。

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata> 
    <id>StyleCopSettings</id> 
    <version>1.0.1</version> 
    <title>StyleCopSettings</title> 
    <authors>Clearspan</authors> 
    <owners>Clearspan</owners> 
    <description>StyleCopSettings</description> 
    </metadata> 
    <files> 
     <file src="$pathToYourFile$\styleCopSettings.txt" target="content\Settings" /> 
    </files> 
</package> 

为了通过必须将其添加到您的包target="content\Settings"的内容目录包中的文件添加到项目中。 nuget包的内容目录就像包安装在项目中的根目录(source)。所以,通过在目标中指定更多的目录,我们可以将文件放置在特定的位置。在上面的例子中,styleCopSettings.txt文件将被放置在任何使用此软件包的项目的Settings目录中。设置目录将作为安装的一部分添加。

你叫你的nuspec的NuGet包后,您应该这样结束了这样的

nupkg view

当你消耗你最终会与下面的包。

example

+1

这就是它 - 它的工作。那你真好! – Jake

+1

伟大的提示! “内容”节省我的一天!谢谢! – GRGodoi