Ser*_*her 262 c# .net-4.0 visual-studio
我正在尝试使用C#4.0编译我的excel插件,并在Visual Studio中构建项目时开始遇到此问题.告诉你我之前没有遇到过这个问题,这很重要.什么可能导致这种情况发生?
小智 267
当我遇到这个问题时,我通过关闭"启用ClickOnce安全设置"来修复它.
菜单:项目| '项目名称'属性... | 安全选项卡| "启用ClickOnce安全设置"复选框.
Kit*_*Kit 238
我的猜测是你没有使用强名命的程序集.当两个项目引用相同程序集的略有不同版本并且更依赖项目引用这些项目时,我遇到了这个错误.在我的情况下,解决方案是从.csproj文件中的程序集名称中删除密钥和版本信息(无论如何都没关系),然后执行干净的构建.
不同组件版本之间的更改与引用它们的解决方案部分兼容.如果您不是这种情况,则可能需要做更多工作来解决问题.
使用NuGet,如果出现以下情况,很容易陷入这种情况:
这会导致解决方案中的两个项目引用该程序包程序集的不同版本.如果其中一个引用另一个并且是ClickOnce应用程序,您将看到此问题.
要解决此问题,请update-package [package name]在Nuget Package Manager控制台发出命令,将所有内容都放到一个公平的竞争环境中,此时问题就会消失.
您应该在解决方案级别而不是在项目级别管理NuGet包,除非有令人信服的理由不这样做.解决方案级别的包管理避免了多个版本的依赖项的可能性.使用管理UI时,如果" 合并"选项卡显示一个或多个包具有多个版本,请考虑将它们合并为一个.
Oti*_*iel 70
看到这个答案.
转到发布页面,然后单击"应用程序文件".从那里你应该看到你的DLL的列表.确保那些给您带来麻烦的发布状态标记为"包含"而不是"先决条件".
Sog*_*ger 13
如果您更改了程序集版本或复制了错误中指定的托管库的其他版本,则可能还会先编译引用错误版本的文件.一个'Rebuild All'(或删除你之前评论中提到的'bin和'obj'文件夹)应该可以解决这个问题.
为这个问题添加我的解决方案给任何可能有用的人.
我有一个ClickOnce解决方案抛出此错误.该应用程序引用了一个常见的"Libs"文件夹,并包含对a的项目引用Foo.dll.虽然解决方案中没有任何项目引用了Foo.dll"Libs"文件夹中的静态副本,但该文件夹中的一些引用确实如此(即:我的解决方案Libs\Bar.dll引用了引用的引用Foo.dll.)因为CO应用程序从中删除了所有依赖项Libs以及它们的依赖关系,这两个副本都进入了项目.这产生了上面的错误.
我通过将Libs\Foo.dll静态版本移动到子文件夹来解决问题Libs\Fix\Foo.dll.此更改使ClickOnce应用程序仅使用DLL的项目版本,并且错误消失.
如果您在此问题中尝试了所有其他答案,并且您:
...您可能在项目的引用中有单独版本的NuGet包DLL,因为Intellisense/ReSharper创建的引用将是"正常"引用,而不是预期的NuGet引用,因此NuGet更新过程赢了"找到或更新它!
要解决此问题,请删除项目A中的引用,然后使用NuGet进行安装,并确保所有项目中的NuGet包都是相同的版本.(如本答案中的解释)
只要ReSharper/Intellisense建议添加对项目的引用,就会出现此问题.它可能比上面的例子更加复杂,有多个交织项目和依赖关系使得难以追踪.如果ReSharper/Intellisense建议的引用实际上来自NuGet包,请使用NuGet进行安装.
在将 Excel 插件从 packages.config 迁移到 PackageReference 后,我遇到了这个问题。似乎与这个问题有关。
如果您不使用 ClickOnce(它将忽略.manifest文件中的所有依赖项信息),则以下方法可用作粗略的解决方法:
找到看起来像这样的部分:
<!-- Include additional build rules for an Office application add-in. -->
<Import Project="$(VSToolsPath)\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets" Condition="'$(VSToolsPath)' != ''" />
Run Code Online (Sandbox Code Playgroud)编辑引用.targets文件的重命名副本(在我的情况下,文件解析为C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets并且我Microsoft.VisualStudio.Tools.Office_FIX.targets在同一个文件夹中制作了一个副本- 没有检查它是否在不同的文件夹中工作)。
找到该GenerateApplicationManifest元素并将其属性更改Dependencies="@(DependenciesForGam)"为Dependencies=""。
更改在 2. 中找到的部分以引用您编辑过的.targets文件。
每当.targets更新 VS 随附的文件版本时,都必须重复此操作(否则您将无法获得更新),但我希望它很快得到修复...
| 归档时间: |
|
| 查看次数: |
120124 次 |
| 最近记录: |