我注意到当Visual Studio 2012 RTM关闭时,MsBuild.exe的许多实例仍在内存中.
为什么?
我写了一个MsBuild任务:MyTask.在我的解决方案中,我有Task项目和其他项目.MyTask引用了一个引用第三个程序集的项目(比如ProjA),比如说(dep1和dep2).
这些项目都构建良好,我将输出放在一个目录(Compil)中.在这个目录中我有我想要的所有dll:MyTask.dll,ProjA.dll,dep1.dll,dep2.dll等.
在我的MsBuild文件中,我包含自定义任务程序集:
<UsingTask AssemblyFile="..\Compil\MyTask.dll" TaskName="CreateSitesCss" />
Run Code Online (Sandbox Code Playgroud)
然后我调用MyTask程序集的任务.该调用执行得很好但是MsBuild抱怨没有找到dep1和dep2程序集(尽管它们位于同一目录中):
错误:无法加载文件或程序集'dep1,Version = 2.0.0.0,Culture = neutral,PublicKey Token = 9109c11469ae1bc7'或其依赖项之一.该系统找不到指定的文件.
我可以通过将dep1.dll和dep2.dll复制到c:\ windows\microsoft .net\framework\v4.0 \来解决这个问题,但我不想这样做,因为它在构建其他项目时会触发问题(赢了' t将dep1.dll和dep2.dll复制到输出目录...).
有没有人有同样的问题,或更好的解决方案?
编辑
这是Fusion Log Viewer的输出
*** Assembly Binder Log Entry (19/10/2010 @ 17:52:45) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = HEADOFFICE\bbaumann
LOG: DisplayName = ProjA
(Partial)
WRN: …Run Code Online (Sandbox Code Playgroud) msbuild dependencies msbuild-task assembly-resolution probing
我有一个asp.net webforms应用程序.每个aspx.cs类都需要从继承自System.Web.UI.Page的BasePage.cs继承.
所需页面继承:
class MyChildPage : BasePage : System.Web.UI.Page
Run Code Online (Sandbox Code Playgroud)
如何在创建新子页面时强制它从BasePage.cs而不是System.Web.UI.Page继承?
潜在解决方案
注意:这些子页面共享相同的母版页,这可能会有所帮助.