我有一个解决方案(ASP.NET,.NET 4.0)似乎没有正确更新其dll。我注意到,当我在进行更改后编译它时,它没有看到我所做的添加。
我最近将解决方案上的目标平台切换到x86,因为我们现在将它部署到x64服务器上,现在我在x64 Win7机器上维护它。 (我不知道这可能与它有关,见下文。)在我解决问题之后,当我测试时,我发现如果我在其中一个aspx文件中选择“在浏览器中查看”,它突然看到了我之前所做的改变。我梳理了主项目bin文件夹中的目录,我注意到dll被保存到两个不同的地方:bin文件夹的根目录和bin / x86 / debug /。当我简单编译解决方案时,第一个位置正在更新,第二个位置在我在其中一个aspx文件中使用“浏览器中的视图”时得到更新。
是否有人知道可能导致此行为的错误设置?
更新:@Vinkal提供的答案让我相信Debug正在查看编译代码的bin/
文件夹,而不是编译代码的bin/x86/debug/
。这可能是核心问题吗?
答案 0 :(得分:4)
我梳理了主项目bin文件夹中的目录,并且 我注意到dll被保存到两个不同的地方:根的 bin文件夹和bin / x86 / debug /。第一个位置了 当我简单编译解决方案时更新,第二个是 当我使用"在浏览器中查看"时更新在其中一个aspx上 文件。
检查Configutation Manager
是否选择了platform
,如下面的屏幕截图#1所示。
屏幕截图#1:配置管理器
如果您创建新的platform
(此处为x86
),则Output Path
会自动设置为bin\x86\Debug\
。请参见下面的屏幕截图。
屏幕截图#2: 选择项目属性时构建设置
因此,当您编译项目时,将根据Output Path
(在我的情况下,bin\x86\Debug\
复制二进制文件,用于Platform x86
中设置的Platform Target
。如下面的屏幕截图所示进行确认,编译时复制所有二进制文件。如您所述,在编译解决方案时, bin文件夹的根目录正在更新。因此,对于Output Path
Platform (Any CPU, x86 or x64)
,您的项目Platform Target
必须设置为 Bin文件夹的根目录
注意:如果Post-Build event commmand
设置为复制二进制文件,则也会将其复制到Path
中指定的Post-Build event command
。
在浏览器中查看:使用View in browser
打开页面时,将再次编译页面,并根据Output Path
中指定的Project Properties
复制二进制文件显示在屏幕截图#2 中。正如您所提到的,当您在浏览器中查看该页面时,bin\x86\Debug\
会更新,这表示Output Path
中的bin\x86\Debug\
设置为Project Properties
,在下面显示的屏幕截图中,当使用View in Browser
打开页面时,Binary将转到Bin
文件夹,平台被选为Any CPU
构建后事件命令:如果您还设置了Post-build event command
,如下面的屏幕截图所示,则在两种情况下复制不同位置的路径(即当您编译并View in Browser
)时,它将被复制到Path
Post-build event command
修改强>
如上所述[{3}},请使用<probing>
元素:
您可以使用应用程序配置文件中的元素来指定运行时在查找assembly
时应搜索的子目录。以下示例显示如何指定运行时应搜索的目录。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
privatePath
属性包含运行时应搜索assemblies
的目录。如果应用程序位于C:\ Program Files \ MyApp,则运行时将查找未在C:\ Program Files \ MyApp \ Bin,C:\ Program Files \ MyApp \中指定代码库的assemblies
Bin2 \ Subbin和C:\ Program Files \ MyApp \ Bin3。 privatePath中指定的目录必须是应用程序基目录的子目录
因此,在您的情况下,请修改web.config
,如下所示
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin\x86\debug"/>
</assemblyBinding>
</runtime>
</configuration>
答案 1 :(得分:0)
您可以尝试通过更改工具中的不同配置来克服此问题 - &gt;选项 - &GT;调试 - &gt;符号