使用 NuGet 将项目程序集引用添加到名为 *.Resources.dll 的文件 [英] Use NuGet to add a project assembly reference to a file named *.Resources.dll

查看:11
本文介绍了使用 NuGet 将项目程序集引用添加到名为 *.Resources.dll 的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在确定应将包中的哪些 dll 作为程序集引用添加时,NuGet 会排除以.Resources.dll"结尾的任何内容.这是为了排除本地化的卫星组件,但这意味着添加起来很棘手如果您有一个名为 MyCompany.Resources.dll 的 DLL,请提供参考.

NuGet excludes anything that ends ".Resources.dll" when determining which dlls in a package should be added as assembly references. This is designed to exclude the localised satellite assemblies, but it means it is tricky to add a reference if you have a DLL that is called MyCompany.Resources.dll.

有什么好的解决方法吗?

Are there any good workarounds for this?

推荐答案

我现在按照 https://nuget.codeplex.com/workitem/1644,有一些修改.

I worked around this for now by following an example at https://nuget.codeplex.com/workitem/1644, with some modifications.

我为网站项目添加了检查,因为它们不支持添加"方法.

I added a check for Website projects because they don't support the 'Add' method.

我在 nuspec 文件中的 metadata 元素之后添加了这个.(可能仅在您使用 NuGet 2.5 中提供的 includereferencedprojects 选项时才需要)

I added this after the metadata element in my nuspec file. (Probably only necessary if not you're using the includereferencedprojects option available in NuGet 2.5)

<files>
  <file src="binReleaseFoo.Resources.dll" target="lib
et40" />
  <file src="binReleaseFoo.Resources.pdb" target="lib
et40" />
  <file src="tools*" target="tools" />
</files>

然后将这两个文件添加到我的项目目录中的新 tools 文件夹中.(注意对 DLL 路径传递给 References.Add 方法的方式的修复,与 codeplex 示例相比)

And then added these two files to a new tools folders in my project directory. (Note the fix to the way DLL path is passed to the References.Add method, compared to the codeplex example)

Install.ps1

param($installPath, $toolsPath, $package, $project)
$resourcesDll = Join-Path $installPath "lib
et40Foo.Resources.dll"
Write-Host "Adding resources DLL from " $resourcesDll

if ($project.Kind -eq "{E24C65DC-7377-472b-9ABA-BC803B73C61A}") {
    $project.Object.References.AddFromFile($resourcesDll)
} else {    
    $project.Object.References.Add($resourcesDll)
}

Uninstall.ps1

param($installPath, $toolsPath, $package, $project)

Write-Host "Removing Foo.Resources reference"
$project.Object.References | where { $_.Name -eq 'Foo.Resources' } | foreach { $_.Remove() }

这篇关于使用 NuGet 将项目程序集引用添加到名为 *.Resources.dll 的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆