无法在ASP.Net中以编程方式编译.csproj

时间:2012-03-07 11:04:43

标签: asp.net silverlight msbuild

我正在创建一个Web应用程序。我喜欢使用MSBuild.exe动态编译VS项目。当通过本地计算机运行时,这非常有用。但是当我在IIS中配置时,相同的实现不起作用。我怀疑IIS可能会限制某些权限。但不清楚。

编译时遇到的错误是,

CSC:错误CS1504:无法打开源文件'c:\ Windows \ Temp \ Silverlight,Version = v4.0.AssemblyAttributes.cs'('访问被拒绝'。)

注意:我正在编译Silverlight项目。上述错误也是Process的标准输出,它以代码1退出。

代码编译项目,

 ProcessStartInfo startInfo = new ProcessStartInfo();
 startInfo.FileName = MSBuildPath;
 startInfo.UseShellExecute = false;
 startInfo.CreateNoWindow = true;
 startInfo.WindowStyle = ProcessWindowStyle.Hidden;
 startInfo.RedirectStandardOutput = true;
 startInfo.Arguments = "\"" + file.FullName + "\"" + " /t:Rebuild /p:Configuration=Release";
 this.process = Process.Start(startInfo);

对此有何解决方案?

1 个答案:

答案 0 :(得分:1)

“Silverlight,Version = v4.0.AssemblyAttributes.cs”文件是在TEMP文件夹中创建的,由于系统帐户(以及配置错误的用户帐户)在c:\ windows \ temp中有TEMP文件夹,他们必须共享相同的文件名。这是一个问题,因为一个帐户创建的文件不具有不同帐户的权限。

请尝试以下方法:
1.创建用户帐户并为该用户帐户配置应用程序池标识 2.将App pool属性“加载用户配置文件”设置为true。

这将确保您的App池获得自己的TEMP目录,并且不与任何其他帐户共享状态。