1

我使用以下步骤创建了一个 nuget 包。

  1. 首先我创建了一个 Asp.net Mvc 应用程序
  2. 我使用 nuget spec 命令创建了规范文件
  3. 然后我编辑了 $id$,$version$,$author$,$description$ 等。
  4. 然后我使用以下命令创建了包。
  5. nuget pack myproject.csproj -Build -Properties Configuration=Release
  6. 它是由一个 myproject.1.0.0.0.nupkg 创建的
  7. 然后我将文件复制到 C:\LocalNuGetFeed\myproject.1.0.0.0.nupkg
  8. 我已经在我的 VS 中配置了本地存储库

我的问题是 当我从任何其他项目安装此软件包时,它会询问以下问题。但根据我的要求,我不想将此文件移动到目标项目。假设用户给它覆盖目标项目文件,因为它我面临很多参考问题。

**File Conflict
File 'Web.config' already exists in project 'CRM'. Do you want to overwrite it?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "N"): 

File Conflict
File 'Global.asax' already exists in project 'CRM'. Do you want to overwrite it?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "N"):** 

但是在我的包中,我不想将上面的两个文件从包移动到目标项目。

有什么方法可以避免将 Global.asax 和 Web.config 从包转移到目标项目。

在我的 .nuspec 文件中,我添加了以下行

<files>  
     <file src="Web.config" target = "" exclude="Web.config"/> 
    <file src="*.asax" target = "" exclude="*.asax"/>
    <file src="Content\*.css" target="Content\" />
    <file src="Scripts\*.js" target="Content\Scripts\" />
  </files>

但它在 Content 文件夹中包含web.config文件和Global.aspx文件我的结果包如下所示

myproject.1.0.0.0
      >> Content
           ....css
           >>Script
                ..Js file
           web.config
           Global.asax  
4

3 回答 3

1

我使用以下命令解决了这个问题

nuget pack CrmHtmlController.csproj -IncludeReferencedProjects -Exclude **\*.config;**\*.asax

所以它从包中排除所有 .congig 和 .asax 文件。

于 2015-10-01T11:07:43.467 回答
0

查看您的 .nuspec 文件。它只是一个 XML 文件,因此您可以使用任何文本编辑器打开它。看看它如何定义要包含的文件<package><files>?删除那些你不想要的文件。如果您想使用 GUI 执行此操作,一个方便的工具是NuGet 包管理器

于 2015-09-30T17:41:08.330 回答
0

Nuget 在您的包中包含 web.config,因为 web.config 的构建操作是“内容”。默认情况下,这是经典发布 asp.net 网站所必需的。

如果您不希望这样做,可能是因为您的程序集只是另一个网站的组件,您可以将构建操作更改为“无”,并且 nuget 将不再使用它。

于 2016-03-30T10:15:50.700 回答