C# VS2010 DLL未更新
我有一个解决方案(ASP.NET、.NET4.0),它似乎没有正确地更新DLL。我注意到,当我修改后编译它时,它看不到我添加的内容 我最近将解决方案上的目标平台切换到x86,因为我们现在将其部署到x64服务器上,并且我现在将其维护在x64 Win7机器上。(我不知道这是否与此有关,请参见下文。)在我隔离问题后,当我进行测试时,我发现如果我在一个aspx文件上选择“在浏览器中查看”,它会突然看到我之前所做的更改。我仔细浏览了主项目的bin文件夹中的目录,发现DLL被保存到两个不同的位置:bin文件夹的根目录和bin/x86/debug/。第一个位置在我编译解决方案时得到更新,第二个位置在我对一个aspx文件使用“在浏览器中查看”时得到更新 有人知道可能导致这种行为的错误设置吗 更新:@Vinkal提供的答案让我相信Debug正在查看编译代码的C# VS2010 DLL未更新,c#,asp.net,.net,visual-studio-2010,compiler-errors,C#,Asp.net,.net,Visual Studio 2010,Compiler Errors,我有一个解决方案(ASP.NET、.NET4.0),它似乎没有正确地更新DLL。我注意到,当我修改后编译它时,它看不到我添加的内容 我最近将解决方案上的目标平台切换到x86,因为我们现在将其部署到x64服务器上,并且我现在将其维护在x64 Win7机器上。(我不知道这是否与此有关,请参见下文。)在我隔离问题后,当我进行测试时,我发现如果我在一个aspx文件上选择“在浏览器中查看”,它会突然看到我之前所做的更改。我仔细浏览了主项目的bin文件夹中的目录,发现DLL被保存到两个不同的位置:bin文件
bin/
文件夹,而不是编译代码的bin/x86/Debug/
。这可能是核心问题吗
我梳理了主项目的bin文件夹中的目录
我注意到DLL被保存到两个不同的地方:文件的根
bin文件夹和bin/x86/debug/。第一个地点是
在我编译解决方案时更新了,第二个是
在其中一个aspx上使用“在浏览器中查看”时得到更新
档案
检查configuration Manager
以了解选择了什么platform
,如下面的屏幕截图1所示
屏幕截图#1:Configuration Manager
如果创建新的平台
(此处为x86
),则输出路径
将自动设置为bin\x86\Debug\
。请参见下面的屏幕截图
屏幕截图#2:选择项目属性时的生成设置
因此,在编译项目时,将根据输出路径
复制二进制文件(在我的例子中,平台x86
的bin\x86\Debug\
,在平台目标
中设置)。如下面的屏幕截图所示,确认编译时复制所有二进制文件的位置。正如您所提到的,在编译解决方案时,bin文件夹的根目录将得到更新。因此,对于任何平台(任何CPU、x86或x64)
您在平台目标中设置的项目输出路径
必须设置为Bin文件夹的根目录
注意:如果Post-Build event command
设置为复制二进制文件,它也将被复制到Post-Build event命令中指定的路径
在浏览器中查看:当使用浏览器中的视图打开页面时,页面将再次被编译,并根据项目属性
中指定的输出路径复制二进制文件,如屏幕截图2所示。正如您所提到的,当您在浏览器中查看页面时,bin\x86\Debug\
会更新,这表明当使用浏览器中的视图打开页面时,项目属性中的bin\x86\Debug\
将输出路径设置为bin\x86\Debug\
,屏幕截图如下所示,二进制文件将进入Bin
文件夹,平台被选为任何CPU
生成后事件命令:如果您还设置了生成后事件命令
,如下面的屏幕截图所示,以在两种情况下(即在浏览器中编译和查看时)在不同位置复制路径,它将被复制到生成后事件命令中指定的路径
编辑:
如上所述,使用
元素:
您可以使用应用程序配置文件中的元素指定运行时在定位程序集时应搜索的子目录。下面的示例显示了如何指定运行时应该搜索的目录
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
我梳理了主项目的bin文件夹中的目录
我注意到DLL被保存到两个不同的地方:文件的根
bin文件夹和bin/x86/debug/。第一个地点是
在我编译解决方案时更新了,第二个是
在其中一个aspx上使用“在浏览器中查看”时得到更新
档案
检查configuration Manager
以了解选择了什么platform
,如下面的屏幕截图1所示
屏幕截图#1:Configuration Manager
如果创建新的平台
(此处为x86
),则输出路径
将自动设置为bin\x86\Debug\
。请参见下面的屏幕截图
屏幕截图#2:选择项目属性时的生成设置
因此,在编译项目时,将根据输出路径
复制二进制文件(在我的例子中,平台x86
的bin\x86\Debug\
,在平台目标
中设置)。如下面的屏幕截图所示,确认编译时复制所有二进制文件的位置。正如您所提到的,在编译解决方案时,bin文件夹的根目录将得到更新。因此,对于任何平台(任何CPU、x86或x64)
您在平台目标中设置的项目输出路径
必须设置为Bin文件夹的根目录
注意:如果生成后事件命令
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin\x86\debug"/>
</assemblyBinding>
</runtime>
</configuration>