从图像资源引用到VS 2015中的packages文件夹中的图像

时间:2017-03-01 09:22:11

标签: c# git visual-studio-2015 nuget nuget-package-restore

对于某个项目,我需要创建包含图像的不同NuGet包。然后,我需要在项目中安装这些包并将图像放在表单中。一切顺利。

我的问题是,当我结帐到Git中的另一个分支并执行包恢复时,由于某种原因,Visual Studio无法找到表单中使用的图像。要使它工作,我需要在解决方案级别手动输入以下命令:

Update-Package Reinstall

在我这样做之后,一切都在重建。问题是,每次我在Git中切换分支时我都不想这样做。我已经看过Visual Studio是否有解决这个问题的方法,但我能找到的只有:Linked and Embedded Resources

我希望在执行包还原时,Visual Studio会替换对映像的引用,因此它会在包还原后始终识别图像。我的问题:这是否可能,如果可能,怎么样?

我希望你有足够的信息来回答这个问题。谢谢!

编辑: 好的,让我在这里重新解释一下这个问题。还原包时,它仅还原\packages\文件夹中的文件。这意味着,当我在本地克隆存储库时,项目资源文件夹中没有任何内容,因为我在.gitignore图像中应该忽略。因此,当我恢复时,它不会更新\packages\文件夹。 这就是为什么我希望在资源文件夹中引用\packages\文件夹。

例如:

Package1.1.0.0包中有一个图像。叫做Img1。安装包时,它会将图像保存在以下路径下。

\packages\Package1.1.0.0.\Resources\Icons\Img1.png

\ packages是解决方案下的文件夹。

在我安装软件包的项目中,还有一个Img1。该图像保存在此处:

\project\Resources\Icons\Img1.png

项目保存在解决方案下面。

现在,我希望Img1.png不包含文件本身,而是包含对packages文件夹中Img1.png的引用。此外,当我将软件包更新到版本1.0.1时,我希望Visual Studio仍然正确地引用Img1.png。

编辑:

好的,所以我做了一些调查,我发现我的确切问题是NuGet的GitHub页面上的一个问题:https://github.com/NuGet/Home/issues/2895

2 个答案:

答案 0 :(得分:0)

如果我理解正确,则应使用相应包文件夹的相对路径引用表单中的图像。 e.g。

  

/Packages/Package1/Images/Img1.png

通过这种方式,一旦包恢复并在包文件夹中可用,它们应该能够在新分支中得到解决。

只是要确保检查图像路径是否在表单中正确设置。

答案 1 :(得分:0)

如果您回答“我执行包恢复时,Visual Studio会替换对图像的引用,因此它将始终识别包恢复后的图像”。

正如您的评论一样,当您将软件包从软件包1.1.0.0更新到软件包1.1.0.1时,旧软件包1.1.0.0将被删除,并且引用也将被破坏。因此需要在解决方案级别手动键入以下命令:

Update-Package Reinstall

如果要将软件包更新到版本1.0.1,并且Visual Studio仍然正确引用了Img1.png,则可以将此Img1.png分别打包到软件包中,而不是将其包含在package1中.1.0.0 即可。在这种情况下,当您将软件包1.1.0.0更新为1.1.0.1时不会破坏软件包Img1.png的引用