VS2010 DLL没有更新

时间:2015-02-24 20:50:19

标签: c# asp.net .net visual-studio-2010 compiler-errors

我有一个解决方案(ASP.NET,.NET 4.0)似乎没有正确更新其dll。我注意到,当我在进行更改后编译它时,它没有看到我所做的添加。

我最近将解决方案上的目标平台切换到x86,因为我们现在将它部署到x64服务器上,现在我在x64 Win7机器上维护它。 (我不知道这可能与它有关,见下文。)在我解决问题之后,当我测试时,我发现如果我在其中一个aspx文件中选择“在浏览器中查看”,它突然看到了我之前所做的改变。我梳理了主项目bin文件夹中的目录,我注意到dll被保存到两个不同的地方:bin文件夹的根目录和bin / x86 / debug /。当我简单编译解决方案时,第一个位置正在更新,第二个位置在我在其中一个aspx文件中使用“浏览器中的视图”时得到更新。

是否有人知道可能导致此行为的错误设置?

更新:@Vinkal提供的答案让我相信Debug正在查看编译代码的bin/文件夹,而不是编译代码的bin/x86/debug/。这可能是核心问题吗?

2 个答案:

答案 0 :(得分:4)

  

我梳理了主项目bin文件夹中的目录,并且   我注意到dll被保存到两个不同的地方:根的   bin文件夹和bin / x86 / debug /。第一个位置了   当我简单编译解决方案时更新,第二个是   当我使用"在浏览器中查看"时更新在其中一个aspx上   文件。

检查Configutation Manager是否选择了platform,如下面的屏幕截图#1所示。

屏幕截图#1:配置管理器

Configuration Manager

如果您创建新的platform(此处为x86),则Output Path会自动设置为bin\x86\Debug\。请参见下面的屏幕截图。

屏幕截图#2: 选择项目属性时构建设置

Build Event Option from Project Properties

因此,当您编译项目时,将根据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

enter image description here

在浏览器中查看:使用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

enter image description here

构建后事件命令:如果您还设置了Post-build event command,如下面的屏幕截图所示,则在两种情况下复制不同位置的路径(即当您编译并View in Browser)时,它将被复制到Path

中指定的Post-build event command

enter image description here

修改

如上所述[{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;符号