【发布时间】:2017-05-03 07:33:50
【问题描述】:
我有一个应用程序有一个对System.Net.Http 的 NuGet 引用(显然,还有许多其他引用)。
当我使用“发布”构建此应用程序的包并选择“从 CD”选项时,它会将安装编译到本地文件夹中,所有二进制文件都打包到 .deploy 文件中。全部,即除了System.Net.Http.dll。
我尝试了许多不同的解决方法,更改项目中 System.Net.Http 引用的属性,然后删除 NuGet 引用并将其添加为 .NET Framework 中的程序集引用。无所事事。这个特殊的 DLL 似乎具有独特的抗与其他二进制文件一起打包的能力。
如果有什么不同,我正在使用 .NET Framework 4.6.2。
为什么会发生这种行为?如何解决?
更新:
根据下面的 cmets,我调查了 Project Properties > Publish > Application Files。 System.Net.Http.dll 未在选项中列出。所以我通过将System.Net.Http.Extensions.dll 的“发布状态”更改为“包含”(而不是“包含(自动)”)来破解它,这在我的项目文件中添加了一个部分,然后我对其进行了编辑以删除“.Extensions” ,因此:
<ItemGroup>
<PublishFile Include="System.Net.Http">
<Visible>False</Visible>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
</ItemGroup>
现在我的项目应用程序文件列表包含 System.Net.Http... 有点:
嗯,很明显这里有些东西很混乱。 System.Net.Http 被同时引用和不被引用。当我发布时,即使我已明确包含它,System.Net.Http.dll仍然未发布。
【问题讨论】:
-
您是否将其包含在您的发布中?
-
@ShahroozAnsari 你什么意思?哪里可以选择在发布过程中包含(或排除)任何特定文件?
-
检查它是否包含在项目属性中 > 发布 > 应用程序文件
-
在您的项目的属性中发布,并且您可以选择包含或排除文件的按钮(应用程序文件)
-
@ShahroozAnsari 那么这就是疯狂的事情。我打开了那个对话框,
System.Net.Http.dll甚至没有出现在列表中!这是怎么回事?!
标签: c#