GVKun编程网logo

c# – 使用Microsoft.Build.Evaluation(而不是Engine)修改编程csproj文件(c# helpprovider)

18

如果您对c#–使用Microsoft.Build.Evaluation(而不是Engine)修改编程csproj文件感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于c#–使用

如果您对c# – 使用Microsoft.Build.Evaluation(而不是Engine)修改编程csproj文件感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于c# – 使用Microsoft.Build.Evaluation(而不是Engine)修改编程csproj文件的详细内容,我们还将为您解答c# helpprovider的相关问题,并且为您提供关于.net – 如何在使用Microsoft.Build.Evaluation(MSBuild)构建之前执行清理、asp.net – 在Microsoft Ajax中伪造__EVENTVALIDATION、asp.net-mvc – 在Mono 2.4上使用Microsoft Data Entity Framework和Microsoft MVC、c# – 使用MSBuild构建.csproj而不使用项目引用的有价值信息。

本文目录一览:

c# – 使用Microsoft.Build.Evaluation(而不是Engine)修改编程csproj文件(c# helpprovider)

c# – 使用Microsoft.Build.Evaluation(而不是Engine)修改编程csproj文件(c# helpprovider)

我想阅读,修改和写回csproj文件.
我发现了这段代码,但不幸的是引擎类被折旧了.
Engine engine = new Engine()
Project project = new Project(engine);
project.Load("myproject.csproj");
project.SetProperty("SignAssembly","true");
project.Save("myproject.csproj");

所以我继续根据提示我应该使用Evaluation.ProjectCollection而不是Engine:

var collection = new ProjectCollection();
collection.DefaultToolsversion = "4.0";
var project = new Project(collection);

// project.Load("myproject.csproj") There is NO Load method :-(
project.FullPath = "myproject.csproj"; // Instead of load? Does nothing...

// ... modify the project
project.Save(); // Interestingly there is a Save() method

没有Load方法了.我试图设置属性FullPath,但项目似乎仍然是空的.错过了什么?

(请注意我知道.csproj文件是带有XSD架构的标准XML文件,我知道我们可以使用XDocument或XmlDocument来读/写它.这是一个备份计划.只需看看.Save()方法就可以了.项目类我认为如果我无法加载现有的.csproj,我会错过一些东西.thx)

解决方法

我实际上找到了答案,希望能帮助别人:

我们应该使用ProjectCollection类的工厂方法,而不是创建一个新的Project(…)并尝试.Load(…)它.

// Instead of:
// var project = new Project(collection);
// project.FullPath = "myproject.csproj"; // Instead of load? Does nothing...

// use this:
var project = collection.LoadProject("myproject.csproj")

.net – 如何在使用Microsoft.Build.Evaluation(MSBuild)构建之前执行清理

.net – 如何在使用Microsoft.Build.Evaluation(MSBuild)构建之前执行清理

我使用以下代码来构建项目.我想首先执行一个Clean(或者只是强制一个ReBuild我想?) – 但我找不到任何文档说明我是如何做到这一点的:

Private Shared _globalProp As Dictionary(Of String,String)
    Private Shared _logger As BuildLogger

    Dim thisProject As Project = nothing
    Dim buildSuceeded As Boolean

    If _globalProp Is nothing Then
        _globalProp = New Dictionary(Of String,String)
        _globalProp.Add("Configuration","Release")
        _globalProp.Add("Platform","x86")
    End If
    _logger = New BuildLogger

    thisProject = New Project(projectFilename,_globalProp,"14.0")
    buildSuceeded = thisProject.Build(_logger)

解决方法

感谢@JerryM指向正确的方向.

我似乎无法找到同时接受目标和记录器的Build方法的适当重载,所以我现在分两步执行此操作,这似乎做我想要的:

thisProject = New Project(projectFilename,"14.0")

        Dim targets As String() = {"Clean"}
        cleanSucceeded = thisProject.Build(targets)

        buildSuceeded = thisProject.Build(_logger)

asp.net – 在Microsoft Ajax中伪造__EVENTVALIDATION

asp.net – 在Microsoft Ajax中伪造__EVENTVALIDATION

我正在为网站制作移动应用程序以查看您的日程安排.他们不提供任何API,也无意提供任何API.

该网站只能使用Ajax,但要伪造这些请求并刮掉我需要伪造__EVENTVALIDATION帖子字段的网站.

我对网站没有任何控制权,而且我从未使用ASP.NET或Microsoft Ajax构建任何东西.

有没有人这样做过?

我发现__EVENTVALIDATION字段有这种模式(…表示字节根据请求,base64解码版本的hexdump而改变):

d8 01 16 13 02 4f 0a
...
f6 e0 84 d4 05 02 a0 3f
e2 3f 03 02 3f d8 d1 d5 0c 02 bb 82 cf ec 08 02
b4 b5 99 f8 0b 02 3f 89 3f eb 04 02 d5 83 90 88
0a 02 8a db 94 90 03 02 8b cf 3f 85 08 02 93 3f
b1 3f 06 02 9b 3f 8f a5 02 02 b5 b4 af 85 01 02
d1 fc ae 9c 0e 02 b4 e2 94 9e 0a 02 3f e2 94 9e
0a 02 3f e2 94 9e 0a 02 bb 92 80 a5 06
...                                  

解决方法

在构建ASP.NET站点的scraper之前,我已经解决了这个问题.您需要请求浏览器用户通常会登陆的初始页面,提取__VIEWSTATE和__EVENTVALIDATION哈希,然后使用这些来对您实际需要的数据进行第二次请求.

例如,如果您正在从表单提交中抓取响应:

>为表单所在的页面发出AJAX请求
>从响应中提取视图状态和事件验证哈希
>创建一个模拟表单提交的新AJAX请求,将哈希作为参数传递

如果你正在寻找JavaScript函数来从标记中提取哈希,我已经在GitHub上发布了我用作ms-viewstate的那些.

asp.net-mvc – 在Mono 2.4上使用Microsoft Data Entity Framework和Microsoft MVC

asp.net-mvc – 在Mono 2.4上使用Microsoft Data Entity Framework和Microsoft MVC

我在Ubiquity网站托管服务上使用Mono 2.4.

我创建了一个简单的MVC tutioal applciation,链接了here,并验证它使用了所有Microsoft工具.

接下来,应用程序更新为指向在我的Ubiquity主机上运行的MysqL服务器数据库.该应用程序在基于Microsoft的计算机上运行良好.

现在,我正在尝试将应用程序部署到Ubiquity上的单声道服务器.

我设置System.Web.MVC,因此它将copyLocal = true.

我将应用程序部署到单声道服务器.

我收到此错误:

描述:解析为此请求提供服务所需的资源时出错.检查您的源文件并对其进行修改以修复此错误.

分析器错误消息:程序集System.Data.Entity,版本= 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089未找到
版本信息:单声道版本:2.0.50727.1433; ASP.NET版本:2.0.50727.1433

我猜这个问题可能是……

A)单声道不支持实体框架.我需要使用Microsoft Data Entity Framework之外的其他东西.

B)单声道版本的System.Data.Entity的公钥令牌不是“b77a5c561934e089”.

C)还有其他事情发生.

我尝试为System.Entity.Data dll设置copyLocal = true.因此,部署到我的单声道服务器的Microsoft版本的DLL.我怀疑这是合法的.无论如何,这只会产生以下错误:

Got a SIGSEGV while executing native code. This usually indicates
a Fatal error in the mono runtime or one of the native libraries
used by your application.

有人可以确认可以在Mono上使用Microsoft Entity Framework吗?根据上面链接的Microsoft MVC教程中的这个评论,我可能会迁移远离Microsoft Entity Framework.

“The ASP.NET MVC framework is not tied to the Microsoft Entity Framework. You can create >your database model classes by taking advantage of a variety of Object Relational Mapping >(OR/M) tools including LINQ to sql,Subsonic,and NHibernate.”

但是,为了保持一致性,我想在单声道上使用Microsoft Entity Framework,如果可能的话.

解决方法

您还应该为System.Data.Entity程序集设置copyLocal = true.您注意到您复制了System.Web.MVC local,但从未提及您在本地复制了System.Data.Entity.您可能还需要复制System.Data.Entity所依赖的任何不属于Mono的本地程序集.

c# – 使用MSBuild构建.csproj而不使用项目引用

c# – 使用MSBuild构建.csproj而不使用项目引用

从头开始编写MSBuild文件时,是否可以直接构建.csproj文件而无需引用他们所属的解决方案?像 this one这样的介绍性指南经常解释如何编译单个.cs文件或直接从命令行构建.csproj.

例如,没有.sln引用的命令行MSBuild:

msbuild helloworld.csproj /t:Build /verbosity:detailed

或.csproj给出.sln:

<MSBuild
  Projects="mysolution.sln"
  Targets="My_Project_File"
  Properties="Configuration=$(Configuration);Platform=$(Platform)"
  ContinueOnError="false" />

我没有找到任何提及在没有.sln的MSBuild文件中构建.csproj的引用.有没有办法,我只是缺少一些东西?

解决方法

没有解决方案构建csproj文件没有任何错误:
<MSBuild Projects="my_project.csproj" Targets="Build" />

此外,当您使用Visual Studio构建解决方案时,它在内部实际执行的操作是将解决方案文件转换为包含类似上述行的msbuild脚本来构建项目.

关于c# – 使用Microsoft.Build.Evaluation(而不是Engine)修改编程csproj文件c# helpprovider的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.net – 如何在使用Microsoft.Build.Evaluation(MSBuild)构建之前执行清理、asp.net – 在Microsoft Ajax中伪造__EVENTVALIDATION、asp.net-mvc – 在Mono 2.4上使用Microsoft Data Entity Framework和Microsoft MVC、c# – 使用MSBuild构建.csproj而不使用项目引用的相关知识,请在本站寻找。

本文标签: