我有,应该是一个相对直接的问题。我有一个MVC项目,我想在将来与其他MVC项目分享一些共同的观点。
为了实现这一目标,我创建了一个NuGet包,并希望将包中的公共视图链接到已安装的项目中。
NuGet结构:
这是我的" 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的路线,我不想这样做.--
答案 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
文件的内容,该文件不会在项目内部发生变化,但可能需要在某些内容中更新为更高版本指出未来。