我目前正在为我们公司的其他应用程序进行服务器控制,以便与WCF服务进行交互。每次我更改代码更改并重新编译控件时,我都会将AsseemblyInfo.cs中的AssemblyVerison和AssemblyFileVersion类增加一个。例如,我的最新版本从1.0.07.0到1.0.08.0。
当使用应用程序通过复制bin目录中的最新文件并尝试编译来更新文件时,它们会收到以下错误:
类型或命名空间名称'MyControl' 在命名空间中不存在 'MyNamespace'(你错过了吗? 装配参考?)
为了解决此错误,他们必须删除当前引用并重新添加引用。
有没有办法更新服务器控件而无需删除并重新添加引用?
我没有强烈命名服务器控件 @JPunyon - 你的意思是让消费者应用程序将服务器控制项目添加到他们的解决方案中吗?
答案 0 :(得分:29)
在我的例子中,它是使用Target Framework定义的项目:“.NET Framework 4.0 Client Profile”,它试图引用使用Target Framework定义的dll项目:“.NET Framework 4.0”。
一旦我将项目设置更改为使用Target Framework:“.NET Framework 4.0”,所有内容都构建得很好。
右键单击项目 - >属性 - >应用程序 - >目标框架
答案 1 :(得分:17)
右键单击解决方案资源管理器中的程序集引用,属性,禁用“特定版本”选项。
答案 2 :(得分:2)
你是否强力命名你的装配?在这种情况下,自动增加您的内部版本号并不是一个好主意,因为每个新的内部版本号都需要更新所有引用。
答案 3 :(得分:2)
如果以上解决方案均无效,请尝试此10秒修复程序。
在解决方案资源管理器中导航到启动项目。右键单击属性> 应用程序> 目标框架。将目标框架更改为其他任何内容。按是进入确认对话框。几秒钟使更改生效,然后将框架切换回原来的状态。
希望错误会像对我一样为您消除!
答案 4 :(得分:1)
我碰到了指向正确方向的答案,但是......
对于那些使用Visual C ++的人:
如果需要关闭版本的自动增量,可以在“AssemblyInfo.cpp”文件中更改此值(所有CLR项目都有一个)。给它一个没有星号的真实版本号,它将按你想要的方式工作。
不要忘记在程序集上实现自己的版本控制!
答案 5 :(得分:0)
在我的情况下,我不得不将Copy Local设置更改为true(在解决方案资源管理器中右键单击程序集,选择属性,找到并更改Copy Local属性的值)。更改此设置后,我的WCF服务的发布将文件复制到服务器,错误就消失了。
答案 6 :(得分:0)
答案 7 :(得分:0)
我在TFVC存储库上使用Azure DevOps Services(MS托管)生成管道遇到此错误。
在我的情况下,我在一个分支内工作,并且不小心从树干的package文件夹而不是分支中添加了引用。从分支内添加引用后,它就开始成功编译。
也就是说,在处理\ branch-beta \ sierra.csproj时,我不小心引用了\ trunk \ packages \ delta.dll。显然,我需要引用\ branch-beta \ packages \ delta.dll。发生混淆是因为该路径未在添加引用窗口中突出显示,并且我没有仔细检查。
答案 8 :(得分:0)
我在 Visual Studio 2019版本16.4.4
中发现了此问题我发现
可以解决大多数问题packages.config
缺少适当的参考
例如:
<package id="System.Runtime" version="4.3.0" targetFramework="net461" />
答案 9 :(得分:0)
删除解决方案目录的“Web.Debug.config”和“Web.Release.config”文件,它应该会删除所有错误
答案 10 :(得分:0)
如果代码以前可以工作并且现在抛出错误,如上述答案中所述,可能已修改其中一个配置。在蛮力方法中,关闭 VS 编辑器并删除 .sln 文件所在目录中的 .vs 文件夹。所有配置都将被清除并从 repo 文件中提取。