将NuGet包中的文件自动链接到项目中

时间:2016-05-19 19:24:43

标签: asp.net-mvc visual-studio-2013 msbuild nuget

我有,应该是一个相对直接的问题。我有一个MVC项目,我想在将来与其他MVC项目分享一些共同的观点。

为了实现这一目标,我创建了一个NuGet包,并希望将包中的公共视图链接到已安装的项目中。

NuGet结构:

  • /
    • 构建
      • packageName.props
      • 的src /
        • test.cshtml

这是我的" packageName.props"文件:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="$(MSBuildThisFileDirectory)\src\test.cshtml">
      <Link>Views\Shared\test.cshtml</Link>
    </None>   
  </ItemGroup>  
</Project>

不幸的是,这绝对没有。我可以让文件显示的唯一方法是,如果我将副本添加到输出元素,但它不显示为链接文件,它是一个副本。我真的不想走下powershell路线,因为这应该正常工作。任何帮助将不胜感激。

- 只是想澄清我想将文件作为链接添加到项目中,而不是副本.-- - 我最初从这里得到了这个想法How to tell nuget to add package resource files as links, and not copy them into project directory,但他们最终走上了powershell的路线,我不想这样做.--

1 个答案:

答案 0 :(得分:0)

来自NuGet文档:

  

...您可以布局遵循NuGet约定的目录结构。

     
      
  • 工具 - 软件包的tools文件夹适用于可从软件包管理器控制台访问的PowerShell脚本和程序。将文件夹复制到目标项目后,它将添加到`$ env:Path(PATH)环境变量中。
  •   
  • lib - 安装软件包时,会将lib文件夹中的程序集(.dll文件)添加为程序集引用。
  •   
  • 内容 - 安装软件包后,内容文件夹中的文件将复制到应用程序的根目录
  •   
  • 构建 - 程序包的构建文件夹用于MSBuild目标文件,这些文件会自动插入到应用程序的.csproj文件中。
  •   
     

将Content文件夹视为目标应用程序的根目录。例如,如果我想要一个包在目标应用程序的/ images目录中添加图像,请确保将图像放在包的Content / images文件夹中。

问题是您要将内容放入构建文件夹(仅适用于MSBuild目标)。

build/
    packageName.props
content/
    Views/
        Shared/
            test.cshtml

在这种情况下,我不相信您的packageName.props文件是必需的,因为NuGet会自动将内容文件添加到Visual Studio项目文件中。

  

请注意,使用NuGet部署内容并不是一件非常实际的事情。如果您在安装后编辑内容,NuGet将跳过卸载它,并且在升级NuGet包的情况下,它将提示用户是否覆盖更改。由于NuGet没有任何&#34;合并冲突&#34;这不是一个非常好的场景。

     

这仅适用于部署类似jQuery插件.js文件的内容,该文件不会在项目内部发生变化,但可能需要在某些内容中更新为更高版本指出未来。