控制 .nuspec 中的代码合同引用

2024-04-27

我正在使用代码合同为我的项目生成附属程序集。基本上,它为项目的 MyAssembly.dll 创建一个 MyAssembly.Contracts.dll。它应该放在您的程序集旁边,但不会被任何应用程序引用 - 它仅由合同工具使用。

我试图将其包含在我的 nuget 包中,但是当我将该包安装到另一个应用程序中时,Contracts 程序集作为引用包含在内,这会产生问题。

根据.nu​​spec 参考 http://docs.nuget.org/docs/reference/nuspec-reference#Specifying_Explicit_Assembly_References,这应该像添加一个一样简单references元素,但它似乎被忽略了。我当前的理论是,这是因为我使用 .csproj 作为替换令牌,并且它正在读取 .csproj 而不是 .nuspec 的引用。

以前有人这样做过吗?有任何想法吗?

以下是我的 .nuspec 的相关部分:

<?xml version="1.0"?>
<package>
  <metadata>
     <references>
          <reference file="MyAssembly.dll"/>
     </references>
  </metadata>
  <files>
     <file src="bin\Release\CodeContracts\*.dll" target="lib\net45"/>
  </files>
</package>

由于代码合同是一个单独的且optional集会,我建议创建一个新的 MyPackage.CodeContracts 包它将代码契约程序集复制到您需要的位置。这可以使用一个简单的 PowerShell 脚本(install.ps1 + uninstall.ps1)在所谓的工具包.

例如,这与创建 MyPackage.Sample 包的方法类似。使用基于约定的目录创建包并以 .nuspec 文件为目标。你会遇到更少的问题,恕我直言,这也是一个更好的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

控制 .nuspec 中的代码合同引用 的相关文章

随机推荐