【问题标题】:How to avoid my own nuget package overwrite the target project web.config and global.aspx file when they install my package如何避免我自己的nuget包在安装我的包时覆盖目标项目web.config和global.aspx文件
【发布时间】:2015-09-30 15:11:45
【问题描述】:

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

  1. 首先我创建了一个 Asp.net Mvc 应用程序
  2. 我使用 nuget spec 命令创建了 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 中配置了本地仓库

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

**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  

【问题讨论】:

  • 一开始就不要在你的包中包含这些东西吗?
  • 请提供任何示例如何排除文件

标签: asp.net visual-studio-2012 nuget nuget-server nuget-spec


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 2021-04-24
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      相关资源
      最近更新 更多