【问题标题】:msbuild not copying referenced assemblymsbuild没有复制引用的程序集
【发布时间】:2016-02-11 16:07:17
【问题描述】:

我有一个包含两个项目的解决方案: - projectA 有一个对 ServiceStack ormlite 的 nuget 引用 - projectB 有对 projectA 的引用

当我构建解决方案时,projectA 的 outdir 包含来自 nuget 包的所有程序集(4 个程序集),而 projectB 只复制其中的 2 个。显然,当我启动它时,我得到一个FileNotFoundException。 我已经尝试添加private=true标志没有成功

我已经看到很多关于这个问题的引用,现在它对这里发生的事情感到非常困惑(似乎 msbuild 没有按照我认为是我唯一知道的方式处理引用:()。

知道可以做些什么来构建我的解决方案吗?

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    构建只会将 projectA 实际使用的程序集复制到 projectB 的输出文件夹,并导致在 projectA 的输出程序集中引用,而不管 projectA 引用了哪些程序集。

    您可以使用 Reflector 或 ildasm 打开 projectA 的程序集,然后查看这 4 个程序集中只有 2 个实际使用和引用。

    如果项目B 的程序集需要在运行时存在,请将 NuGet 包的引用也添加到 projectB,或确保它们已被复制。这个帖子显示了general-purpose solution,但是我没试过。

    【讨论】:

    • 是的,我实际上已经这样做了。我尽量避免这条路线,因为我的解决方案实际上包含数十个项目和相同数量的单元测试项目(它们也需要与您提出的相同处理)。感谢您的回答和链接,我只希望 MS 解决这个问题,因为在我的情况下,许多依赖项(automapper、servicestack ormlite、servicestak 接口......)都会出现问题。
    • I image projectA 使用那些未复制的程序集,因为@Dave 说他得到了FileNotFoundException
    猜你喜欢
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多