Mat*_*ius 9 .net c# dll nuget visual-studio-2013
我试图通过使用动态序列化对象到即时窗口
Newtonsoft.Json.JsonConvert.SerializeObject(myObj);
Run Code Online (Sandbox Code Playgroud)
但是我得到了以下错误
'Newtonsoft.Json.dll'和'NuGetApi2.dll'中都存在'Newtonsoft.Json.JsonConvert'类型
它发生时.dll未在项目中引用放入bin旁边的其他文件夹下.dll,其设置在项目中引用,并具有(在这种情况下,内同一个库Newtonsoft.Json中NuGetApi2.dll该项目ins't参考)
为什么我在使用立即/调试窗口时才会出现此异常,而不是在编译代码时?(当编译它的工作正常,因为编译器正在使用项目中引用的dll)
如何告诉Visual Studio .dll使用哪个(最好不必停止程序运行)?
一个显而易见的方法是删除.dll未在项目中引用的内容,....我要求的是:有没有办法告诉它dll通过代码使用哪些Immediate window....
更新:重现bug的解决方案可以在这里找到:
解决方案是压缩的WebApplication1.7z,我使用MVC应用程序,重现添加断点HomeController,Index方法以及何时将其粘贴Newtonsoft.Json.JsonConvert.SerializeObject("sfdsdfsdf");到Visual Studio的即时窗口中.
项目代码如下:
public class HomeController : Controller
{
public ActionResult Index()
{
var x = Newtonsoft.Json.JsonConvert.SerializeObject("sdfsdf");
#if DEBUG
var y = Newtonsoft.Json.JsonConvert.SerializeObject("sfssesss");
#endif
return View(); //put breakpoint here then into immediate window paste Newtonsoft.Json.JsonConvert.SerializeObject("sdfsdf"); and you should get the error.
}
Run Code Online (Sandbox Code Playgroud)
bik*_*868 -1
默认情况下,.Net 网站在启动时加载 bin 文件夹中的所有程序集。您可以通过修改 web.config 文件来更改此行为,在这种情况下,您需要列出要加载的程序集。
这是一个仅加载 1.0.0.0 版本的示例MySite.dll
<system.web>
<compilation>
<assemblies>
<remove assembly="*" />
<add assembly="MySite, Version=1.0.0.0, Culture=neutral />
</assemblies>
</compilation>
</system.web>
Run Code Online (Sandbox Code Playgroud)
如果您只加载所需的程序集而不加载 NuGetApi2 程序集,这应该可以解决您的问题
| 归档时间: |
|
| 查看次数: |
2455 次 |
| 最近记录: |